発射したボールが、一定の距離まで飛べば、削除される仕組みをつくってみましょう。
クリックでボールが飛んで行って、発射元から20離れたところで、消えます。
関連記事:
発射したボールの飛距離を算出する
一定距離から外れたら実行する
オブジェクト間の距離を取得する
X軸だけの移動量をfloat型で取得
ボールのPrefabデータ作成
Sphereを作成し、リジッドボディを追加します。
BallDelete.csを作成し、Sphereに追加します。
BallDelete.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallDelete : MonoBehaviour { private float startPos; private float endPos; private float distance; public void StartSet() { startPos = this.transform.position.z; } void Update() { endPos = this.transform.position.z; distance = endPos - startPos; if (distance >= 20.0f) { Destroy(gameObject); } } } |
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject ball; void Update() { if(Input.GetMouseButtonDown(0)) { GameObject obj = GameObject.Instantiate (ball)as GameObject; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 dir = ray.direction; obj.GetComponent<Rigidbody>().AddForce(dir * 1000); ball.GetComponent<BallDelete>().StartSet(); } } } |
Ballのフィールドに、Sphereのプレハブを入れます。
ゲームプレイして、ボールを発射してみましょう。
クリックしてボール発射。
発射元からの距離が20に達したところで、ボールが削除されます。
関連記事:
発射したボールの飛距離を算出する
一定距離から外れたら実行する
オブジェクト間の距離を取得する
X軸だけの移動量をfloat型で取得