『Unityでシューティングゲーム開発』障害物に当たった砲弾を削除する

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

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

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

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

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

そのため、発射した砲弾は随時「削除」してやる必要があります。

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

*「何かに触れたら削除(Destroy)」するような仕組みを作ります。

・まず「Cube」で「壁」を作りましょう。

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

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

・「色(もしくは模様)」も自分の好みに変更してください。

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

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

3)スクリプトの作成

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

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

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

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

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

using UnityEngine;
using System.Collections;

public class DestroyShell : MonoBehaviour {

	void OnCollisionEnter(Collision other){
		if(other.gameObject.CompareTag("Shell")){
			Destroy(other.gameObject);
		} 
	}
}

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

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

・次に、「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

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

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

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

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

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

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

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

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

これで準備完成です。

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

壁にぶつかったShell(砲弾)がすぐに画面から消えたら成功です。

 


(サイト紹介)

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