【Unity】3D射的ゲームを作ってみる④(当たり判定を付ける)
スポンサーリンク
今回は的と弾に当たり判定を付けていきます。
5.当たり判定を設定
5-1.Tagを作成
まずインスペクターウインドウで「TagetFactory」のTagから「Add Tag...」を選択します。
Tagsの「+」をクリックします。
追加したら、またTagに戻って「Target」を選択しましょう。
「Target」と入力してSaveをクリックします。
5-2.当たり判定を付ける
・的に当たったことを判定するために弾の「BulletFactoryScript」に以下のメソッドを追加します。
// 当たり判定 private void OnCollisionEnter(Collision collision) { // TargetのTagの場合 if (collision.gameObject.CompareTag("Target")) { // 消す Destroy(collision.gameObject); } }
OnCollisionEnterは衝突判定のメソッドです。
これで当たり判定ができました。
と思いきや、何故かうまくいきませんでした。
OnCollisionEnterメソッドが呼ばれない・・・。
何故でしょう・・・。
変わりにOnTriggerEnterを使うことで想定の動きができました。
かつ「BulletFactoryScript」ではなく「BulletScript」を新たに作って、BulletのScriptに設定することで解決しました。
// 当たり判定 private void OnTriggerEnter(Collider other) { // 消す Destroy(gameObject); Destroy(other.gameObject); }
OnTriggerEnterを使う場合は、両方のオブジェクトの「Is Trigger」にチェックを付けました。
調べると「OnCollisionEnterが呼ばれない」という人が多かったですが、皆さん解決していたみたいです。
本当は「OnCollisionEnter」を使うべきだと思うのですが、1時間ぐらいはまって、結局解決できませんでした。
Tagも使用しませんでしたし。
また別の機会に挑戦してみたいと思います。
もしわかる方がいたら教えてください。