ある範囲にいる時には、プログラミングが実行できなくなり、そこから抜け出すと実行できるようにしてみましょう。
今回は、ジャンプができないエリアを作ってみます。
関連記事:
特定エリアに近づくと追いかけてくる
エリアに入れば追いかけられる(NavMeshAgent)
エリアに入れば音量を上げる
エリア内にn秒間滞在すれば実行
Collider内にとどまればn秒間動けなくなる
指定した範囲にいると実行できない
Planeを作成し、Cubeを上に置きます。
Cubeにリジッドボディを追加します。
空のオブジェクトを作成します。
GameObjectにボックスコライダーを追加して、トリガーにするにチェック。
コライダーのサイズを変更し、位置を変えます。
シーンビューでは、コライダーはこのように配置されています。
Cubeを動かすために、スクリプトをつくりましょう。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { Renderer cubeMaterial; private float input; Rigidbody rb; private bool isArea; void Start() { cubeMaterial = GetComponent<Renderer>(); rb = GetComponent<Rigidbody>(); } void Update() { if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-0.1f, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(0.1f, 0f, 0f); } if (Input.GetKey(KeyCode.Space)) { if(!isArea) rb.AddForce(new Vector3(0, 30, 0 )); } } void OnTriggerStay(Collider other) { if(other.gameObject.name == "GameObject") { isArea = true; } } void OnTriggerExit(Collider other) { if(other.gameObject.name == "GameObject") { isArea = false; } } } |
ゲームプレイしてみましょう。
エリア内に入れば、ジャンプが不可になります。
関連記事:
特定エリアに近づくと追いかけてくる
エリアに入れば追いかけられる(NavMeshAgent)
エリアに入れば音量を上げる
エリア内にn秒間滞在すれば実行
Collider内にとどまればn秒間動けなくなる