🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

500閲覧

hpが実装できなくエラーになる

退会済みユーザー

退会済みユーザー

総合スコア0

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/11/30 02:14

編集2019/11/30 02:41

敵に弾を当てると
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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

madone99

2019/11/30 02:41

Debug.Log("HP: " + hp); Debug.Log("HP: " + hp + " / Bullet Power: " + bullet.power); で、consoleには正常に表示されていますか?
退会済みユーザー

退会済みユーザー

2019/11/30 02:42

コンソールには NullReferenceException: Object reference not set to an instance of an object Enemy.OnTriggerEnter2D (UnityEngine.Collider2D c) (at Assets/Scripts/Enemy.cs:63) しかでないです
guest

回答1

0

エラーの出ている63行目はどの行でしょうか?

投稿2019/11/30 02:36

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/11/30 02:40

修正します
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問