さて、次は砲弾が当たった物体を破壊する方法を学びます。
1)物体を配置する。
まずは、物体を画面に配置します。
・「3Dオブジェクト」を使って自分の好きなように物体を作成してください。
・「色」も「大きさ」も全て自由です。
次は、配置した物体を破壊するスクリプトの作成です。
2)物体を破壊するスクリプト
プログラミングの考え方(ロジック)はこうです。
「戦車の砲弾(Shell)が物体とぶつかったら、その物体を画面から消えるようにする。」
「ぶつかったら◯◯する」というのは、「OnTriggerEnter」もしくは「OnCollisionEnter」の出番となります。
では、まずいつものように「C#」スクリプトを1つ作成しましょう。
名前は「DestroyObject」に変更します。
変更ができたらダブルクリック。
・下記のコードを記載してください。
using UnityEngine; using System.Collections; public class DestroyObject : MonoBehaviour { void OnCollisionEnter(Collision other){ if(other.gameObject.CompareTag("Shell")){ // 物体を破壊する。 Destroy(gameObject); // 砲弾を破壊する。 Destroy(other.gameObject); } } }
・コードが書けたらチェック。
・「成功」したら、スクリプトを物体にドラッグ&ドロップしましょう。
さあ、ここまでできたら「再生ボタン」を押してみましょう。
砲弾を発射して物体にぶつけてみてください。
砲弾が当たった瞬間に「物体」と「砲弾」が画面から消えれば成功です。
(復習)物体がなぜ消えるのか「その仕組み」については次の3)を読んで理解しておきましょう!
3)「Collider」コンポーネント
「当たり判定」を行うためには「物体の周りに見えない枠」を設定する必要があります。
この見えない枠のことを「Collider」(コライダー)と言います。
「Cubeオブジェクト」には最初から「Box Collider」というコライダーが付いています。
・試しに「Box Collidesr」の「サイズ」を変更してみましょう。
この状態で「再生ボタン」を押して砲弾を物体に当ててみましょう。
今度は、「物体自体」に当たるよりも「前」のタイミングで物体が消えると思います。
これは砲弾が「コライダー(=当たり判定の透明な枠)」に当たったからです。
この仕組みを理解しておきましょう。