はじめに
Unityでゲームを作成する際、当たり判定は必須の要素です。
前回は、自機からミサイルが発射されるようにしましたので、自機に当たり判定の設定をする方法を見ていきます。
過去記事は以下の通りです。
- [Unity 2D] Unityのインストールと2Dプロジェクトの作成
- [Unity 2D] Unityエディタの理解
- [Unity 2D] スプライトを登録する
- [Unity 2D] カメラの設定
- [Unity 2D]キャラクターの追加とRigidbody 2Dの追加
- [Unity 2D]キャラクターのキーボードによる移動
- [Unity 2D]ミサイルを発射してみる(1)
- [Unity 2D]ミサイルを発射してみる(2)
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に実装して実行すると、以下のように衝突時にヘリコプターが消えます。
コメント