public class myscript : MonoBehaviour { void Start () { GameObject cube = GameObject.Find ("Cube"); cube.GetComponent<Renderer> ().material.color = new Color (1f, 0, 0, 0.5f); } void Update () { } void OnTriggerEnter(Collider collider){ if (collider.gameObject.tag == "Player") { collider.gameObject.GetComponent<Renderer> ().material.color = new Color (0, 1, 0, 0.5f); } } void OnTriggerStay(Collider collider){ } void OnTriggerExit(Collider collider){ if (collider.gameObject.tag == "Player") { collider.gameObject.GetComponent<Renderer> ().material.color = new Color (1, 0, 0, 0.5f); } } }
[P]・・・プレイヤー
[T]・・・isTriggerオブジェクト
[T]にisTriggerを設定。
[P]にスクリプトをアタッチして、OnTriggerEnterを記述。
するとプレイヤーは、[T]オブジェクトをすり抜けて、イベントは発生する。
[T]・・・isTriggerオブジェクト
[T]にisTriggerを設定。
[P]にスクリプトをアタッチして、OnTriggerEnterを記述。
するとプレイヤーは、[T]オブジェクトをすり抜けて、イベントは発生する。
引用: 【Unity】 静止した物体同士の当たり判定の検出について
また、さらに以下の様な条件がある。
- どちらかにRigidbodyが必ず付いていること
- RigidbodyのIs Kinematic(物理挙動をさせない)にチェックが入っていること
- ColliderのIs Triggerにチェックが入っていること
また、さらに以下の様な条件がある。
- Rigidbodyが付いている方のオブジェクトが移動もしくは回転している(静止しているとダメ)
- (ただし、起動直後のフレームだけは静止していても検出可能)
コメントをかく