行動範囲の指定

AI Navigationをインポートします

Window→AI→NavMesh(Obsolete)を選択

とりあえずパラメータはいじらずにベイクしてみます

行動できる範囲が青く表示されました

Mayaから適当にオブジェクトをインポートして、HierarchyウインドウにNav Mesh Agentコンポーネントを追加します
そのまま再生するとオブジェクトが宙に浮いてしまったのですが、Base Offsetを0にして、Heightを半分にするといい感じになりました
スクリプト
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))]
public class EnemyMove : MonoBehaviour
{
[SerializeField] private PlayerController _playerController;
private NavMeshAgent _agent;
void Start()
{
_agent = GetComponent<NavMeshAgent>();
}
private void Update()
{
_agent.destination = _playerController.transform.position - new Vector3(0, 0, -2);
}
}
こちらがnpcにプレイヤーを追いかけさせるスクリプトになります
_agent.destinationが目的地となり、対象をプレイヤーの位置として毎フレーム距離を縮めていくことになります
プレイヤーにめり込まないように目的地をプレイヤー位置から少しずらしてあります
こちらのスクリプトを先ほどインポートしたオブジェクトにアタッチします

続いてPlayer Controllerの部分にプレイヤーが操作するオブジェクトをアタッチします
テスト


もふもふ
シュールすぎもふ(;゚Д゚)
イスがプレイヤーを追いかけてきたので成功です
まとめ
敵にプレイヤーを追いかけさせる方法
NavMeshをインポートしてベイク→敵オブジェクトにNav Mesh Agentコンポーネントを追加→追従用スクリプトを作成し敵オブジェクトにアタッチ→アタッチしたスクリプトに目的地となるプレイヤーオブジェクトをアタッチ
参考文献:賀好昭仁 作って学べるUnity本格入門 技術評論社 2022 178ページ