前方に発射したボールのPrefabを、あるところまで行けば消えるように作成してみましょう。
クリックでボールを発射し、Z座標20になれば消えていきます。
ミサイルを使ったゲームなど、プレハブを何度も出現させる場合、適切なタイミングで削除するのが良い方法です。
関連記事:
1秒後にPrefabを削除する
落下したプレハブを削除するしくみ
制限時間になればPrefabを全削除
弾が消えなければ次を撃てなくする
発射元のスクリプト
空のオブジェクトを作成します。
c
BallShot.csを作成して、GameObjectに追加します。
BallShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; void Update() { if(Input.GetMouseButtonDown(0)) { GameObject obj = GameObject.Instantiate (prefab)as GameObject; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 dir = ray.direction; obj.GetComponent<Rigidbody>().AddForce(dir * 3000); } } } |
クリックでRay(光線)を飛ばし、その方向に向けて、ボールを飛ばす仕組みです。
ボールのPrefabを生成するたびに、objに格納して、リジッドボディを取得しています。
プレハブを消すスクリプト
次は、ボールのPrefabを作成していきましょう。
Sphereオブジェクトを作成し、色をつけました。
Sphereにリジッドボディを追加します。
BallDestroy.csを作成して、Sphereに追加します。
BallDestroy.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallDestroy : MonoBehaviour { void Update() { if (transform.position.z >= 20.0f) { Destroy(gameObject); } } } |
Sphereをプロジェクトビューにドラッグ&ドロップして、Prefabデータにします。
Sphereの元データは削除します。
GameObjectを選択しすると、プレハブのフィールドが出来ています。
ここに、Sphereのプレハブを入れます。
ゲームプレイしてみましょう。
クリックでボール発射、Zが20のところで消えていきます。
関連記事:
1秒後にPrefabを削除する
落下したプレハブを削除するしくみ
制限時間になればPrefabを全削除
弾が消えなければ次を撃てなくする