敵に弾を当てると
NullReferenceException: Object reference not set to an instance of an object
Enemy.OnTriggerEnter2D (UnityEngine.Collider2D c) (at Assets/Scripts/Enemy.cs:63)
と出てきて敵は死なずにスコアだけ上がるようになった
Enemyの63見てもどう直せばいいのかわからないです
63行目
// スクリプト Bullet コンポーネントを取得して bullet に格納
Bullet bullet = playerBulletTransform.GetComponent<Bullet>();
unity
1// スコアのポイント 2 public int point = 100; 3 4 // ヒットポイント 5 public int hp = 1; 6 7 // Spaceshipコンポーネント 8 Spaceship spaceship; 9 10 IEnumerator Start() 11 { 12 // Spaceshipコンポーネントを取得 13 spaceship = GetComponent<Spaceship>(); 14 15 // ローカル座標のY軸のマイナス方向に移動する 16 spaceship.Move(transform.up * -1); 17 18 // canShotがfalseの場合、ここでコルーチンを終了させる 19 if (spaceship.canShot == false) 20 { 21 yield break; 22 } 23 24 while (true) 25 { 26 27 // 子要素を全て取得する 28 for (int i = 0; i < transform.childCount; i++) 29 { 30 31 Transform shotPosition = transform.GetChild(i); 32 33 // ShotPositionの位置/角度で弾を撃つ 34 spaceship.Shot(shotPosition); 35 } 36 37 // shotDelay秒待つ 38 yield return new WaitForSeconds(spaceship.shotDelay); 39 } 40 } 41 42 void OnTriggerEnter2D(Collider2D c) 43 { 44 // レイヤー名を取得 45 string layerName = LayerMask.LayerToName(c.gameObject.layer); 46 47 // レイヤー名がBullet (Player)以外の時は何も行わない 48 if (layerName != "Bullet (Player)") return; 49 50 // スコアコンポーネントを取得してポイントを追加 51 FindObjectOfType<Score>().AddPoint(point); 52 53 // PlayerBulletのTransformを取得 54 Transform playerBulletTransform = c.transform.parent; 55 56 // スクリプト Bullet コンポーネントを取得して bullet に格納 57 Bullet bullet = playerBulletTransform.GetComponent<Bullet>(); 58 59 // ヒットポイントを減らす 60 61 Debug.Log("HP: " + hp); 62 hp = hp - bullet.power; 63 Debug.Log("HP: " + hp + " / Bullet Power: " + bullet.power); 64 65 // 弾の削除 66 Destroy(c.gameObject); 67 68 // ヒットポイントが0以下であれば 69 if (hp <= 0) 70 { 71 Debug.Log("Destroy"); 72 73 // 爆発 74 spaceship.Explosion(); 75 76 // エネミーの削除 77 Destroy(gameObject); 78 } 79 } 80}
Debug.Log("HP: " + hp);
Debug.Log("HP: " + hp + " / Bullet Power: " + bullet.power);
で、consoleには正常に表示されていますか?
コンソールには
NullReferenceException: Object reference not set to an instance of an object
Enemy.OnTriggerEnter2D (UnityEngine.Collider2D c) (at Assets/Scripts/Enemy.cs:63)
しかでないです