オブジェクトを飛ばし、ぶつけた相手オブジェクトと入れ替わるように、プログラムを作成してみましょう。
クリックでSphereを発射。
Cubeに触れると、同じ位置でSphereに置き換わります。
ぶつけたオブジェクトに置き換える
Cubeを作成し、前方、少し上のほうに配置します。
Sphereを作成し、後方で少し下に配置。
ゲームビューではこのように見えています。
Sphereにリジッドボディを追加。
isKinematicにチェックを入れて、物理演算を効かせなくします。
BallShot.csを作成し、Sphereに追加します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { float power = 20; public GameObject target; Rigidbody rb; void Start() { target = GameObject.Find("Cube"); rb = GetComponent<Rigidbody>(); } void OnMouseDown() { transform.LookAt(target.transform); rb.isKinematic = false; rb.velocity = transform.forward.normalized * power; } private void OnCollisionEnter(Collision other) { Destroy(other.gameObject); rb.isKinematic = true; this.transform.position = other.gameObject.transform.position; } } |
ターゲットのフィールドに、Cubeを入れます。
ゲームプレイして、ボールをクリックしてみましょう。
Cubeにぶつけると、Cubeは削除。
Cubeのあった位置に、Sphereが置き換わります。