オフジェクトに当たっても何も起こりませんが、特定の位置に当たったときのみ実行するプログラムを作成してみましょう。
今回の例では、中心あたりにボールをぶつけた時だけ、Cubeが消えるようにします。
所定の位置にぶつかれば実行する
Cubeを作成し、サイズを5に拡大して、z方向にずらします。
Sphereコライダーを追加し、トリガーにするにチェック。
サイズ小さくして、中心に配置し、表面から見えている状態にします。
シーンビューで見ると、Sphereコライダーはこのように見えています。
CubeScript.csを作成し、Cubeに追加します。
CubeScript.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 CubeScript : MonoBehaviour { void OnTriggerEnter(Collider other) { if(other.gameObject.tag == "Ball") { Destroy(this.gameObject); } } } |
Sphereを新規作成し、リジッドボディを追加します。
Ballというタグを作成して付けます。
ヒエラルキービューにドラッグ&ドロップして、Sphereをプレハブ化します。
Sphereの元データは削除します。
空のオブジェクトを作成します。
ShotScript.csを作成し、GameObject(空のオブジェクト)に追加します。
ShotScript.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 ShotScript : MonoBehaviour { public GameObject prefab; private Vector3 mousePosition; void Update() { if(Input.GetMouseButtonDown(0)) { mousePosition = Input.mousePosition; mousePosition.z = 5.0f; GameObject ball = GameObject.Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity); ball.GetComponent<Rigidbody>().AddForce(transform.forward * 2000); } } } |
プレハブのフィールドに、Sphereのプレハブを入れます。
ゲームプレイしてみましょう。
端のほうに当てても消えませんが、中心付近にぶつけると、Cubeが消えます。