ある範囲内に近づくと、敵キャラが追いかけてくる仕組みをつくってみましょう。
Cube(プレーヤー)を動かして近づけば、Sphere(敵)の色が変わり、プレーヤーを追いかけます。
範囲外に出てしまえば、敵の動きが止まります。
関連記事:
近づくと追いかけられる(NavMeshAgent)
領域に入っている間と離れたときに発生
範囲内に入ればオブジェクトを落下させる
3D空間でプレーヤーを追いかけるオブジェクト
他のオブジェクトに接近すれば繋がる
特定エリアに入った時は実行不可にする
エリアに入れば飛び上がる
エリア内にn秒間滞在すれば実行
Collider内にとどまればn秒間動けなくなる
オブジェクトの準備
CubeとSphereを作成し、距離をはなします。
Cubeにリジッドボディを追加し、重力を使用のチェックをはずします。
空のオブジェクトを作成します。
GameObject(空のオブジェクト)にスフィアコライダーを追加します。
CubeとSphereの間に配置し、「コライダーの編集」でスフィアコライダーを拡大します。
GameObjectの名前を、CautionAreaに変更し、トリガーにするにチェックを入れます。
Colliderを使ってエリア内のフラグ作成
続いて、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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public bool invaded; private float speed = 3.0f; void Update() { if (Input.GetKey (KeyCode.UpArrow)) { transform.position += transform.up * speed * Time.deltaTime; } if (Input.GetKey (KeyCode.DownArrow)) { transform.position -= transform.up * speed * Time.deltaTime; } if (Input.GetKey(KeyCode.RightArrow)) { transform.position += transform.right * speed * Time.deltaTime; } if (Input.GetKey (KeyCode.LeftArrow)) { transform.position -= transform.right * speed * Time.deltaTime; } } void OnTriggerStay(Collider other) { if (other.gameObject.name == "CautionArea" ) { invaded = true; } } void OnTriggerExit(Collider other) { if (other.gameObject.name == "CautionArea" ) { invaded = false; } } } |
プレイして、Cubeを動かしてみましょう。
上下左右が可能になります。
エリア内に入れば、invadedがオンになります。
ある範囲に入れば追いかけるスクリプト
次は、Sphere(敵)が追いかけてくる仕組みをつくりましょう。
SphereChase.csを作成し、Sphereに追加します。
SphereChase.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SphereChase : MonoBehaviour { private GameObject target; private float sphereSpeed = 3.0f; void Start () { target = GameObject.Find("Cube"); } void Update () { if(target.GetComponent<CubeMove>().invaded == true) { GetComponent<Renderer>().material.color = Color.red; transform.LookAt(target.transform); transform.position += transform.forward * sphereSpeed * Time.deltaTime; } else { GetComponent<Renderer>().material.color = Color.white; } } } |
ゲームプレイして、Sphereに近づけてみましょう。
DangerArea内に入った途端、Sphereが赤に変わり、追いかけてきます。
関連記事:
近づくと追いかけられる(NavMeshAgent)
領域に入っている間と離れたときに発生
範囲内に入ればオブジェクトを落下させる
3D空間でプレーヤーを追いかけるオブジェクト
他のオブジェクトに接近すれば繋がる
特定エリアに入った時は実行不可にする
エリアに入れば飛び上がる
エリア内にn秒間滞在すれば実行
Collider内にとどまればn秒間動けなくなる