当たり判定の実装【Unity2Dゲーム】

Unity開発

2Dゲームでオブジェクトに当たり判定を追加して、その際の処理を記述する。

colliderを追加する

当たり判定の形を選択

当たり判定を実装するためゲームオブジェクトにColliderコンポーネントを追加します。

Box Collider(四角)、Circle Collider(丸)、Capsule Collider(楕円)などから
当たり判定としたい形を選んで大きさなどを調整しましょう。

すると下のようにゲームオブジェクトがぶつかるようになります。
それぞれCircle Colliderを設定しています。

「Is Trigger」を設定

後述のOnTriggerメソッドを使うために
Colliderコンポーネントの「Is Trigger」の欄にチェックを入れます。
これにより当たり判定をトリガーに処理を行うことができるようになります。

「Is Trigger」にチェックを入れると
当たり判定を行うだけですり抜けて当たらないようになります。

コード実装

当たり判定で使えるOnTriggerメソッド

当たり判定と接触する時の挙動をOnTriggerメソッドを使って実装します。
状況に合わせて下記のEnter、Stay、Exitを使い分けましょう。

・OnTriggerEnter2D 
オブジェクトに侵入した瞬間に判定を行う。

・OnTriggerStay2D 
オブジェクトの中にいる間は判定を行う。

・OnTriggerExit2D 
オブジェクトから出た瞬間に判定を行う。

これらのタイミングで行いたい処理をメソッド内に記述します。
例えばTrigger設定になっているColliderに侵入したときに
Destroy(gameObject)でオブジェクトを消したいという場合は下記のようになります。

private void OnTriggerEnter2D(Collider2D collision)
     {
             Destroy(gameObject);
     }

当たっている相手を区別して処理を変える

また、OnTriggerメソッドの引数のCollider2Dの情報から
当たっているオブジェクトを区別して処理を行うことができます。

例えばオブジェクトのTag付けを行い。
特定のTagの付いたオブジェクトに当たったときに処理をするようにします。


enemyというTagのついているオブジェクトに当たったときに消滅するとしたいなら
下記のように記述すれば区別して処理を行うことができます。

private void OnTriggerEnter2D(Collider2D collision)
     {
     if (collision.tag == "enemy") {
             Destroy(gameObject);
         }
     }

コメント

タイトルとURLをコピーしました