Unity入門;戦車の砲弾をゲームから削除する方法(コードあり)

1)オブジェクトデータを削除する必要性

砲弾を発射し続けると、Hierarchyの中が下記のように「Shell(Clone)」で埋まってきます。

*(Clone)というのは「プレファブから作成されたオブジェクト」という意味です。

スクリーンショット 2016-01-22 15.51.17

このままだとどんどんデータが増えて、ゲーム自体が重くなってきます。

そのため、画面の外に出た砲弾は「削除」してやる必要があります。

2)オブジェクトを削除する方法

*「透明な壁」を作って、「それに触れたら削除(Destroy)」するような仕組みです。

・まず「Cube」で壁を作ります。

・名前は「DestroyWall」に変更してください。

・壁の大きさは自分の世界のサイズに合わせて調整しましょう。

スクリーンショット 2016-01-22 16.07.33

・壁ができたら、「Inspector」の中にある「Mesh Renderer」のチェックを外します。

これで透明な壁が完成しました。

スクリーンショット 2016-01-22 16.07.45

次にスクリプトを作成します。

3)スクリプトの作成

・まずいつものように「C#」スクリプトを作成します。

・名前は「DestroyWall」に変更しましょう。

スクリーンショット 2016-01-22 16.16.45

スクリプトが作成できたらダブルクリックして開きます。

下記のコードを記入しましょう。

using UnityEngine;
using System.Collections;

public class DestroyWall : MonoBehaviour {

	void OnTriggerEnter(Collider other){

		// もしもぶつかってきたオブジェクトのタグに「Shell」という名前がついていたら
		if(other.CompareTag("Shell")){

			// ぶつかってきたオブジェクトを破壊(削除)せよ。
			Destroy(other.gameObject);
		}
	}
}

スクリプトが作成できたら、いつものように「DestroyWall」オブジェクトにドラッグ&ドロップします。

「Is Trigger」にチェックを入れてください。

(ポイント)
*「OnTrigger」系の命令ブロックを書いたら、「Is Trigger」に必ずチェックを入れましょう!

スクリーンショット 2016-01-22 16.26.04

・次に、「Shell」プレファブに「Shell」という名前のタグを付けます。

・「Prefabs」フォルダの中の「Shell」プレファブをクリックします。

・「Tga」はまだ何もついていないので「Untagged」になっています。

スクリーンショット 2016-01-22 16.26.52

・「Tag」をクリック→「Add Tag….」を選択してクリック。
スクリーンショット 2016-01-22 16.26.57

・「+」をクリック
スクリーンショット 2016-01-22 16.27.01

・「Tag0」に「Shell」と記入してエンター

*大文字、小文字に注意すること。

スクリーンショット 2016-01-22 16.27.09

・再び「Shell」プレファブを選択して「Tag」をクリック。

・「Shell」というタグを選択してクリック。

スクリーンショット 2016-01-22 16.27.17

・これで「Shell」という名前のタグがつきました。

スクリーンショット 2016-01-22 16.27.20

これで準備完成です。

再生ボタンを押して、砲弾を発射してみましょう。

透明な壁にぶつかった「Shell(Clone)」が「Hierarchy」から消えたら成功です。


(サイト紹介)

『CodeGenius | Unity初心者のための学習サイト』