NavMeshAgentを使って、プレーヤーを追いかける機能をつくりましょう。
AIによる自動追尾で、障害物を避けながら、プレーヤーめがけて追いかけてきます。

障害物をのぞいた移動範囲を検出するので、よりゲーム性の高い追尾が可能です。
関連記事:
NavMeshAgentで浮いてしまう場合の対処法
近づくと追いかけられる(NavMeshAgent)
マウスカーソルを追いかけるオブジェクト
3D空間でプレーヤーを追いかけるオブジェクト
ベイクできない場合の留意点
カメラを旋回しながら自動追従させる
ナビゲーションつくる
平面を作成して色をつけ、静的にチェックを入れます。

Cubeを作成し、位置とサイズを変更。静的にチェックを入れます。

Cubeにも色をつけます。
上から見ると、このように配置されています。

Cubeを複製してCube(1)を作成し、Y軸を90°回転します。

上から見ると、このように配置されています。

ナビゲーションウィンドウを追加します。

ナビゲーションのBakeボタンをクリックします。

上から見ると、このようにエージェントが表示されています。

プレーヤーの作成
続いて、プレーヤーを作成しましょう。
Cubeを作成し、名前をPlayerに変更します。
位置を変更して、リジッドボディを追加します。

上から見ると、このように配置されています。

PlayerMove.csを作成し、Playerに追加します。

PlayerMove.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 PlayerMove : MonoBehaviour { void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0f, 0.05f); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, 0f, -0.05f); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-0.05f, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(0.05f, 0f, 0f); } } } |
十字キーで、プレーヤーを操作できるようになります。
NavMeshAgentの作成
続いて、追いかけてくる敵キャラを作成しましょう。
Sphereを作成して色を付け、位置を変更します。

上から見ると、このように配置されています。

EnemyMove.csを作成し、Sphereに追加します。

EnemyMove.csを記述します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class EnemyMove : MonoBehaviour { NavMeshAgent agent; public GameObject target; void Start() { agent = GetComponent<NavMeshAgent>(); } void Update() { agent.destination = target.transform.position; } } |
using UnityEngine.AI; を忘れずに書いておきましょう。
ターゲットのフィールドに、Playerを入れます。

ナビメッシュエージェントを追加します。
コンポーネントを追加 > ナビゲーション > ナビメッシュエージェント

ゲームプレイして、プレーヤーを動かしてみましょう。
Sphereが、Playerを追いかけてきます。

関連記事:
NavMeshAgentで浮いてしまう場合の対処法
近づくと追いかけられる(NavMeshAgent)
マウスカーソルを追いかけるオブジェクト
3D空間でプレーヤーを追いかけるオブジェクト
ベイクできない場合の留意点
カメラを旋回しながら自動追従させる