レッスン 2.4 - 衝突の判定

Tutorial

Beginner

+0XP

50 mins

(242)

Unity Technologies

レッスン 2.4 - 衝突の判定

概要:

ゲームは順調に出来上がってきていますが、完成までに追加しなければならない重要な点がいくつかあります。まず、動物をスポーンするためにSキーを押すのではなく、数秒ごとに現れるようにタイマーでスポーンするようにします。次に、すべてのプレハブにコライダーを追加し、動物に投射物を当てると消えるようにします。最後に、動物がプレイヤーを通り過ぎてしまった場合は、「Game Over」のメッセージを表示します。

プロジェクトの成果物:

動物は一定時間ごとに出現して画面を下方向に移動してきます。動物がプレイヤーの前を通過すると「Game Over」のメッセージが表示されます。プレイヤーが動物に餌を投げて当てると、動物が画面から消えます。

1. 導入

2. 新しい方法で動物を出現させる

SpawnManager は上手く動いていますが、動物を出現させるときにまだ S キーを押す必要があります。ゲームで動物を自動的に出現させるために、ここではじめてカスタム関数を書いてみましょう。
  1. SpawnManager.cs で、Update() の下に新しく void SpawnRandomAnimal() {} 関数を作成します。
  2. if-then 文のコードを切り取り、新しい関数に貼り付けます。
  3. S キーが押された場合に、SpawnRandomAnimal()を呼び出します。

3. 一定の間隔で動物を出現させる

動物を出現させるコードをカスタム関数に格納しましたが、まだ S キーを押す必要があります。タイマーで動物を出現させる必要があるので、ここでは数秒ごとにランダムに出現するようにします。
  1. Start() で、InvokeRepeating を使用して、間隔に基づいて動物を出現させるようにします。その後、テストしてください。
  2. S キー が押されたかどうかをテストする if-then 文を削除します。
  3. 新しいプライベート変数 startDelay と spawnInterval を宣言してからプレイテストを行い、変数の値を微調整します。

4. コライダーとトリガーコンポーネントの追加

動物を出現させる部分は完全に動作するようになり、プレイヤーは動物に向かって投射物を発射することができますが、この 2 つが衝突したときには何も起こりません。投射物や動物が衝突したときに消去されるようにするには、おなじみの「コライダー」コンポーネントを動物に追加する必要があります。
  1. 動物のプレハブのうち 1 つをダブルクリックして、「Add Component」 > 「Box Collider」を選択します。
  2. 「Edit Collider」をクリックしてから、オブジェクトを囲むようにコライダーのハンドルをドラッグします。
  3. 「Is Trigger」にチェックを入れます。
  4. このプロセスを動物と投射物のそれぞれについて繰り返します。
  5. 投射物に RigidBody コンポーネントを追加し、「use gravity」のチェックを外します。

5. 衝突時にオブジェクトを消去する

動物と投射物にトリガー付きのボックスコライダーが追加されました。次は、衝突時に消去するスクリプトを新しく書きましょう。
  1. 新しく DetectCollisions.cs スクリプトを作成し、それを動物の各プレハブに追加してから、スクリプトを開きます。
  2. 最後の「}」の前に、OnTriggerEnter 関数を追加します。自動補完を利用しましょう。
  3. OnTriggerEnter に、Destroy(gameObject);を書いてテストします。
  4. OnTriggerEnter に、Destroy(other.gameObject)を書きます。

6. 「Game Over」メッセージを表示する

プレイヤーは可能な限り動物から自分の陣地を守ることになりますが、動物がプレイヤーのいる場所を通り過ぎてしまった場合は「Game Over」というメッセージを表示して、ゲームが終了したことを知らせてあげましょう。
  1. DestroyOutOfBounds.cs の、動物が画面の下まで到達したかどうかをチェックする else-if ブロックに、Game Over メッセージを追加します。
    Debug.Log(“Game Over!”)
  2. コメントでコードをクリーンアップします。
  3. Visual Studio を使用している場合は、Edit > Advanced > Format document の順にクリックして、インデントの問題を修正します。
    (Mac の場合は、Edit > Format > Format Document をクリックします)

7. レッスンのまとめ

新機能

  • 動物が一定の間隔で出現し、画面を下に向かって移動します。
  • 動物がプレイヤーを通り過ぎると、「Game Over」のメッセージが表示されます。
  • 投射物が動物に衝突した場合は、両方のオブジェクトが削除されます。

新しい概念とスキル

  • カスタムメソッド/関数の作成
  • コードを繰り返すための InvokeRepeating()
  • コライダとトリガー
  • 関数のオーバーライド
  • デバッグメッセージをコンソールに表示

Complete this Tutorial