(6)物体を破壊する(コード/コライダー)

さて、次は砲弾が当たった物体を破壊する方法を学びます。

1)物体を配置する。

まずは、物体を画面に配置します。

・「3Dオブジェクト」を使って自分の好きなように物体を作成してください。

・「色」も「大きさ」も全て自由です。

スクリーンショット 2016-05-23 14.00.28

次は、配置した物体を破壊するスクリプトの作成です。

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」というコライダーが付いています。

スクリーンショット 2016-06-10 18.01.08

・試しに「Box Collidesr」の「サイズ」を変更してみましょう。

スクリーンショット 2016-06-10 18.01.21

この状態で「再生ボタン」を押して砲弾を物体に当ててみましょう。

今度は、「物体自体」に当たるよりも「前」のタイミングで物体が消えると思います。

これは砲弾が「コライダー(=当たり判定の透明な枠)」に当たったからです。

この仕組みを理解しておきましょう。