はじめに
NavMeshAgentを用いてキャラクターを自動的に動かす方法をまとめていきます。
NavMeshAgentに関して知らないよという方は調べると様々な記事が出てくるのでそれを参考にしていただければと思います。
簡単に説明すると、目的地まで自動的に移動させるもので途中にオブジェクトなどが存在する場合はそれをAIで避けて目的地まで向かいます。
やり方
-
するとWindowsタブからAIが選択できるようになるのでそこから【Navigation】を選択します
-
すると新しくタブが表示されるので適当に配置してください(自分はインスペクタータブと同じところに配置しています)。
-
Navigation(Obsolete)タブに【Bake】ボタンがあるのでクリックします。すると画面内に水色のものが広がります。これがキャラクターが歩ける範囲になります。
-
次に適当に名前を付けたスクリプトをアタッチして、スクリプトを編集します
-
スクリプトの中身を以下のようになります(最低限)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class EnemyController : Monobehaviour
{
[SerializeField]
private NavMeshAgent _navMeshAgent;
//追いかける対象
[SerializeField]
private Transform _player;
void Update()
{
_navMeshAgent.SetDestination(_player.position);
}
}
9.インスペクターから_navMeshAgent(自身)と_player(追いかける対象)を割り当てる
これでゲームを開始するとプレイヤーのほうに向かって自動で動くようになります
おわりに
現状常に追いかけてきますが、ゲームによって対象との距離が近くなったら追いかけてくるという風に設定したほうがよかったりするかもしれませんね。