1)オブジェクトデータを削除する必要性
砲弾を発射し続けると、Hierarchyの中が下記のように「Shell(Clone)」で埋まってきます。
*(Clone)というのは「プレファブから作成されたオブジェクト」という意味です。
このままだとどんどんデータが増えて、ゲーム自体が重くなってきます。
そのため、画面の外に出た砲弾は「削除」してやる必要があります。
2)オブジェクトを削除する方法
*「透明な壁」を作って、「それに触れたら削除(Destroy)」するような仕組みです。
・まず「Cube」で壁を作ります。
・名前は「DestroyWall」に変更してください。
・壁の大きさは自分の世界のサイズに合わせて調整しましょう。
・壁ができたら、「Inspector」の中にある「Mesh Renderer」のチェックを外します。
これで透明な壁が完成しました。
次にスクリプトを作成します。
3)スクリプトの作成
・まずいつものように「C#」スクリプトを作成します。
・名前は「DestroyWall」に変更しましょう。
スクリプトが作成できたらダブルクリックして開きます。
下記のコードを記入しましょう。
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」に必ずチェックを入れましょう!
・次に、「Shell」プレファブに「Shell」という名前のタグを付けます。
・「Prefabs」フォルダの中の「Shell」プレファブをクリックします。
・「Tga」はまだ何もついていないので「Untagged」になっています。
・「Tag」をクリック→「Add Tag….」を選択してクリック。
・「+」をクリック
・「Tag0」に「Shell」と記入してエンター
*大文字、小文字に注意すること。
・再び「Shell」プレファブを選択して「Tag」をクリック。
・「Shell」というタグを選択してクリック。
・これで「Shell」という名前のタグがつきました。
これで準備完成です。
再生ボタンを押して、砲弾を発射してみましょう。
透明な壁にぶつかった「Shell(Clone)」が「Hierarchy」から消えたら成功です。
(サイト紹介)
『CodeGenius | Unity初心者のための学習サイト』