
レッスン 2.4 - 衝突の判定
Tutorial
Beginner
+0XP
50 mins
(242)
Unity Technologies

概要:
ゲームは順調に出来上がってきていますが、完成までに追加しなければならない重要な点がいくつかあります。まず、動物をスポーンするためにSキーを押すのではなく、数秒ごとに現れるようにタイマーでスポーンするようにします。次に、すべてのプレハブにコライダーを追加し、動物に投射物を当てると消えるようにします。最後に、動物がプレイヤーを通り過ぎてしまった場合は、「Game Over」のメッセージを表示します。
プロジェクトの成果物:
動物は一定時間ごとに出現して画面を下方向に移動してきます。動物がプレイヤーの前を通過すると「Game Over」のメッセージが表示されます。プレイヤーが動物に餌を投げて当てると、動物が画面から消えます。
1. 導入
2. 新しい方法で動物を出現させる
SpawnManager は上手く動いていますが、動物を出現させるときにまだ S キーを押す必要があります。ゲームで動物を自動的に出現させるために、ここではじめてカスタム関数を書いてみましょう。
- SpawnManager.cs で、Update() の下に新しく void SpawnRandomAnimal() {} 関数を作成します。
- if-then 文のコードを切り取り、新しい関数に貼り付けます。
- S キーが押された場合に、SpawnRandomAnimal()を呼び出します。
3. 一定の間隔で動物を出現させる
動物を出現させるコードをカスタム関数に格納しましたが、まだ S キーを押す必要があります。タイマーで動物を出現させる必要があるので、ここでは数秒ごとにランダムに出現するようにします。
- Start() で、InvokeRepeating を使用して、間隔に基づいて動物を出現させるようにします。その後、テストしてください。
- S キー が押されたかどうかをテストする if-then 文を削除します。
- 新しいプライベート変数 startDelay と spawnInterval を宣言してからプレイテストを行い、変数の値を微調整します。
4. コライダーとトリガーコンポーネントの追加
動物を出現させる部分は完全に動作するようになり、プレイヤーは動物に向かって投射物を発射することができますが、この 2 つが衝突したときには何も起こりません。投射物や動物が衝突したときに消去されるようにするには、おなじみの「コライダー」コンポーネントを動物に追加する必要があります。
- 動物のプレハブのうち 1 つをダブルクリックして、「Add Component」 > 「Box Collider」を選択します。
- 「Edit Collider」をクリックしてから、オブジェクトを囲むようにコライダーのハンドルをドラッグします。
- 「Is Trigger」にチェックを入れます。
- このプロセスを動物と投射物のそれぞれについて繰り返します。
- 投射物に RigidBody コンポーネントを追加し、「use gravity」のチェックを外します。
5. 衝突時にオブジェクトを消去する
動物と投射物にトリガー付きのボックスコライダーが追加されました。次は、衝突時に消去するスクリプトを新しく書きましょう。
- 新しく DetectCollisions.cs スクリプトを作成し、それを動物の各プレハブに追加してから、スクリプトを開きます。
- 最後の「}」の前に、OnTriggerEnter 関数を追加します。自動補完を利用しましょう。
- OnTriggerEnter に、Destroy(gameObject);を書いてテストします。
- OnTriggerEnter に、Destroy(other.gameObject)を書きます。
6. 「Game Over」メッセージを表示する
プレイヤーは可能な限り動物から自分の陣地を守ることになりますが、動物がプレイヤーのいる場所を通り過ぎてしまった場合は「Game Over」というメッセージを表示して、ゲームが終了したことを知らせてあげましょう。
- DestroyOutOfBounds.cs の、動物が画面の下まで到達したかどうかをチェックする else-if ブロックに、Game Over メッセージを追加します。
Debug.Log(“Game Over!”) - コメントでコードをクリーンアップします。
- Visual Studio を使用している場合は、Edit > Advanced > Format document の順にクリックして、インデントの問題を修正します。
(Mac の場合は、Edit > Format > Format Document をクリックします)
7. レッスンのまとめ
新機能
- 動物が一定の間隔で出現し、画面を下に向かって移動します。
- 動物がプレイヤーを通り過ぎると、「Game Over」のメッセージが表示されます。
- 投射物が動物に衝突した場合は、両方のオブジェクトが削除されます。
新しい概念とスキル
- カスタムメソッド/関数の作成
- コードを繰り返すための InvokeRepeating()
- コライダとトリガー
- 関数のオーバーライド
- デバッグメッセージをコンソールに表示