ある領域に侵入している時と、領域から出た時。
オブジェクトのカラーを用いて、それぞれの発生イベントを見ていきましょう。
このように、エリアを通過している間は黄色、エリアから出たときには緑に変化します。
関連記事:
OnCollisionEnterとOnTriggerEnterの違い
オブジェクトから離れるとイベント発生
触れている間はイベントを発生させる
触れた相手のオブジェクト名を取得
ぶつかったオブジェクトと同じカラーにする
乗れば下降していく床
エリア内にn秒間滞在すれば実行
特定エリアに入った時は実行不可にする
Collider内にとどまればn秒間動けなくなる
オブジェクトの準備
平面、Cube、Sphereを作成します。
平面にはグレー色を付け、MainCameraの位置を変更しました。
Cubeに透明色をつけましょう。
マテリアルを作成し、Toumeiと名前をつけます。
Rendering ModeをFadeに変更します。
アルベドから色の設定を行います。Aを0にしましょう
透明色が出来たので、これをCubeに追加します。
Cubeオブジェクトが透明になりました。
Cubeを選択し、「トリガーにする」にチェックを入れましょう。
OnTriggerStayとOnTriggerExit
Sphereに動きをつけましょう。
まずはSphereにリジッドボディを追加します。
次に、SphereMove.csを作成して、Cubeに追加します。
SphereMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3.0f; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3.0f; transform.position = new Vector3 ( transform.position.x + dx, 0.5f, transform.position.z + dz ); } //Cubeに侵入している間に発生 private void OnTriggerStay(Collider other) { if (other.gameObject.name == "Cube" ) { GetComponent<Renderer>().material.color = Color.yellow; } } //Cubeから離れたときに発生 private void OnTriggerExit(Collider other) { if (other.gameObject.name == "Cube" ) { GetComponent<Renderer>().material.color = Color.green; } } } |
ゲームプレイして、動きを確認します。
Cubeの中を通過している間は黄色になり、通過し終わるとグリーンに変わります。
OnTriggerStayは、トリガーとなるオブジェクト領域に入ると発生。
OnTriggerExitは、トリガーとなるオブジェクトから離れたときに発生します。
関連記事:
OnCollisionEnterとOnTriggerEnterの違い
オブジェクトから離れるとイベント発生
触れている間はイベントを発生させる
触れた相手のオブジェクト名を取得
ぶつかったオブジェクトと同じカラーにする
乗れば下降していく床
エリア内にn秒間滞在すれば実行
特定エリアに入った時は実行不可にする
Collider内にとどまればn秒間動けなくなる