発射したPrefabが削除されなければ、次のPrefabを発射できなくするように、スクリプトを作成しましょう。
ボールを飛ばし、ある位置まで落下すれば消えます。
いくらクリックしても、前のボールが消えていなければ、次を発射することができません。
関連記事:
発射の弾数を制限する
一度に複数のオブジェクトを発射
弾が消えなければ次を撃てなくする
OnCollisionEnterとOnTriggerEnterの違い
取れば次のオブジェクトが出現する
ボールと削除エリアの用意
Sphereを作成し、リジッドボディを追加。
Ballという名前でタグをつけます。
Sphereをプロジェクトビューにドラッグ&ドロップして、Prefab化します。
Spheteの元データは削除します。
続いて、空のオブジェクトを作成します。
ボックスコライダーを作成し、Yを少し下へ配置。
サイズを大きくして、トリガーにするにチェックを入れます。
シーンビューではこのように見えています。
前の弾が消えなければ発射できない
BallShot.csを作成し、GameObjecctに追加します。
BallShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; public bool isdestroyed; void Start() { isdestroyed = true; } void Update() { if(isdestroyed) { if(Input.GetMouseButtonDown(0)) { GameObject ball = Instantiate(prefab); Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); ball.GetComponent<Rigidbody>().AddForce(ray.direction * 1000); isdestroyed = false; } } } void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Ball" ) { isdestroyed = true; Destroy(other.gameObject); } } } |
プレハブのフィールドに、Sphereを入れます。
ゲームプレイして、動きを確認しましょう。
クリックを連打しても、ボールが消えてからでないと、次のボールが発射できなくなりました。
関連記事:
発射の弾数を制限する
一度に複数のオブジェクトを発射
弾が消えなければ次を撃てなくする
OnCollisionEnterとOnTriggerEnterの違い
取れば次のオブジェクトが出現する