あるエリアの中に、プレーヤーのボディが半分まで入ると実行するように、スクリプトを作ってみましょう。
Sphereを操作して、Cubeの中へ移動します。
Cubeのエリア内に、オブジェクトが半分入れば赤色に変わり、半分外に出ると、また元の色に戻ります。
関連記事:
OnCollisionEnterとOnTriggerEnterの違い
触れた相手のコライダーを削除(無効にする)
コライダーの無効化と有効化
他のコライダーとの距離を取得
ボックスコライダーのサイズを変える
SphereColliderの大きさを変える
Colliderを使った接触判定
エリア内にn秒間滞在すれば実行
特定エリアに入った時は実行不可にする
領域に入っている間と離れたときに発生
Collider内にとどまればn秒間動けなくなる
チェックポイントを中心に置く
CubeとSphereを作成し、少し離して置きます。
Cubeのボックスコライダーを、トリガーにするに設定します。
Sphereの子オブジェクトとして、空のオブジェクトを作成しましょう。
Sphereを右クリックして、空のオブジェクト。
GameObject(空のオブジェクト)にスフィアコライダーとリジッドボディを追加。
コライダーの半径を0.1にして、isKinematicにチェックを入れます。
CheckPoint.csを作成し、GameObjectに追加します。
CheckPoint.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 36 37 38 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CheckPoint : MonoBehaviour { public static CheckPoint instance; public bool isChecked; public void Awake() { if(instance == null) { instance = this; } } void Start() { isChecked = false; } void OnTriggerStay(Collider other) { if (other.gameObject.name == "Cube" ) { isChecked = true; } } void OnTriggerExit(Collider other) { if (other.gameObject.name == "Cube" ) { isChecked = false; } } } |
エリア内に半分侵入すればアクティブ状態
SphereMove.csを作成し、Sphereに追加します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereMove : MonoBehaviour { void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3; transform.position = new Vector3 ( transform.position.x + dx, 0, transform.position.z + dz ); if(CheckPoint.instance.isChecked) { GetComponent<Renderer> ().material.color = Color.red; } else { GetComponent<Renderer> ().material.color = Color.white; } } } |
ゲームプレイしましょう。
十字キーでSphereを操作。
Cubeに半分入り込むと赤色に変わり、半分外に出たところで白に戻ります。
関連記事:
OnCollisionEnterとOnTriggerEnterの違い
触れた相手のコライダーを削除(無効にする)
コライダーの無効化と有効化
他のコライダーとの距離を取得
ボックスコライダーのサイズを変える
SphereColliderの大きさを変える
Colliderを使った接触判定
エリア内にn秒間滞在すれば実行
特定エリアに入った時は実行不可にする
領域に入っている間と離れたときに発生
Collider内にとどまればn秒間動けなくなる