こちらに向かって飛んでくるオブジェクトを、クリック操作で壊せるように、スクリプトを作成してみましょう。
今回の例では、1秒おきに、ランダムの場所からボールが飛んできます。
ボールを左クリックすれば、削除できるようにします。
向かってくるボールをクリックで消す
Sphereを作成し、リジッドボディを追加。
Ballという名前でタグをつけます。
Sphereをプレハブ化します。
Sphereの元データは削除します。
空のオブジェクトを作成します。
BallShot.csを作成し、GameObject(空のオブジェクト)に追加します。
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 39 40 41 42 43 44 45 46 |
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using Random = UnityEngine.Random; public class BallShot : MonoBehaviour { [SerializeField] GameObject prefab; private float time; private int xPos; private int yPos; void Start() { time = 1.0f; } void Update() { time -= Time.deltaTime; if (time < 0) { xPos = Random.Range(-5, 6); yPos = Random.Range(5, 9); GameObject ball = GameObject.Instantiate(prefab,new Vector3(xPos, yPos, 20),Quaternion.identity)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * -1000); time = 1.0f; } Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Input.GetMouseButtonDown(0)) { if (Physics.Raycast(ray, out hit)) { if(hit.collider.gameObject.tag == "Ball") { Destroy(hit.collider.gameObject); } } } } } |
プレハブのフィールドに、Sphereを入れます。
ゲームプレイして、動作を確認しましょう。
ランダムの位置からボールが飛んできます。
ボールをクリックすれば、消すことができます。