[Unity 2D]当たり判定

はじめに

Unityでゲームを作成する際、当たり判定は必須の要素です。

前回は、自機からミサイルが発射されるようにしましたので、自機に当たり判定の設定をする方法を見ていきます。

過去記事は以下の通りです。

Collider

Collider(コライダー)とは当たり判定を可能にするオブジェクトです。

はじめに、ヘリコプターにColliderを設定します。Sceneビューのヘリコプターを選択してInspectorビューで[Add Component]ボタンをクリックします。

メニューが表示されるので[Physics 2D]を選択し、一覧から「Box Collider 2D」を選択します。

コライダーは、他のスプライトのコライダーとぶつかります。また反発をするようになります。

当たったということだけがわかれば良い場合は、[Is Trigger]にチェックをつけます。この場合は、ぶつかっても反発はしませんが、何かに当たったと認識した場合にトリガーが発動するようになります。

次に、当たり判定のエリアを設定します。エリアのサイズは上図のSizeで設定します。また、上図の[Edit Collider]というボタンをクリックすると、Colliderの枠が表示され、マウスでサイズ変更することができます。数値で入力して設定するよりも、範囲がわかりやすくなります。今回はBox Colliderを選択しているので矩形になっていますが Circle Colliderをアタッチしておけば円形のコライダーを使用することもできます。

壁を作成する

当たり判定を確認するために壁を作成します。

縦長の壁をイメージしたスプライトを準備してSceneビューに配置します。

作成した壁にRigidbody 2DとBox Collider 2Dを設定して、Is Triggerのチェックは外しておきます。

また、ヘリコプター側のIs Triggerのチェックも外しておいてください。これで、ヘリコプターは壁にぶつかるはずです。

実行してみると、以下のようにヘリコプターが壁に衝突すると、壁が飛ばされます。またヘリコプターはぶつかった衝撃で傾きます。

衝突時のメソッド実装

Collider 2DのIs Triggerをチェックしておくと、トリガーが発動することを説明しました。

トリガー発動時はOnTriggerEnter2Dメソッドが実行されます。

また、衝突時にオブジェクトを削除したい場合はDestroyメソッドを使用し、引数には削除したいオブジェクトを指定します。

// 衝突時のメソッド
void OnTriggerEnter2D(Collider2D c)
{
    // プレイヤーを削除
    Destroy(gameObject);
}

上記コードをheli.csに実装して実行すると、以下のように衝突時にヘリコプターが消えます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください