1)オブジェクトデータを削除する必要性
砲弾を発射し続けると、Hierarchyの中が下記のように「Shell(Clone)」で埋まってきます。
*(Clone)というのは「プレファブから作成されたオブジェクト」という意味です。
このままだとどんどんデータが増えて、ゲーム自体が重くなってきます。
そのため、発射した砲弾は随時「削除」してやる必要があります。
2)オブジェクトを削除する方法
*「何かに触れたら削除(Destroy)」するような仕組みを作ります。
・まず「Cube」で「壁」を作りましょう。
・名前は「Wall」に変更してください。
・壁の大きさは自分の世界のサイズに合わせて調整しましょう。
・「色(もしくは模様)」も自分の好みに変更してください。
次にスクリプトを作成します。
3)スクリプトの作成
・まずいつものように「C#」スクリプトを作成します。
・名前は「DestroyShell」に変更しましょう。
スクリプトが作成できたらダブルクリックして開きます。
下記のコードを記入しましょう。
using UnityEngine; using System.Collections; public class DestroyShell : MonoBehaviour { void OnCollisionEnter(Collision other){ if(other.gameObject.CompareTag("Shell")){ Destroy(other.gameObject); } } }
スクリプトが作成できたら、いつものように「Wall」オブジェクトにドラッグ&ドロップします。
・次に、「Shell」プレファブに「Shell」という名前のタグを付けます。
・「Prefabs」フォルダの中の「Shell」プレファブをクリックします。
・「Tga」はまだ何もついていないので「Untagged」になっています。
・「Tag」をクリック→「Add Tag….」を選択してクリック。
・「Tag 0」に「Shell」と記入してエンター
*大文字、小文字に注意すること。
・再び「Shell」プレファブを選択して「Tag」をクリック。
・「Shell」というタグを選択してクリック。
・これで「Shell」という名前のタグがつきました。
これで準備完成です。
再生ボタンを押して、砲弾を発射してみましょう。
壁にぶつかったShell(砲弾)がすぐに画面から消えたら成功です。
(サイト紹介)
『CodeGenius | Unity初心者のための学習サイト』