TksLab

IT系ブログ

【Unity】3D射的ゲームを作ってみる④(当たり判定を付ける)

スポンサーリンク

今回は的と弾に当たり判定を付けていきます。

 

5.当たり判定を設定

5-1.Tagを作成

まずインスペクターウインドウで「TagetFactory」のTagから「Add Tag...」を選択します。

f:id:tkslab:20190111230102p:plain

 

Tagsの「+」をクリックします。

f:id:tkslab:20190111225954p:plain

 

追加したら、またTagに戻って「Target」を選択しましょう。

f:id:tkslab:20190111230451p:plain

 

「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」にチェックを付けました。

f:id:tkslab:20190112021441p:plain

 

調べると「OnCollisionEnterが呼ばれない」という人が多かったですが、皆さん解決していたみたいです。

 

本当は「OnCollisionEnter」を使うべきだと思うのですが、1時間ぐらいはまって、結局解決できませんでした。

Tagも使用しませんでしたし。

 

また別の機会に挑戦してみたいと思います。

もしわかる方がいたら教えてください。