追いかけてくる敵の次は「指定した地点を通るように巡回する敵」を作りましょう。これは一見すると難しそうですが、ある工夫をすることで簡単に作ることができます。
工夫:目標となるゲームオブジェクトを設定する
今回プログラムを組む前に考えないといけないことは、「どうやって敵キャラに巡回ルートを教えるか」ということです。NavMeshAgentで実現できることは「行動可能な範囲内」で「ターゲットに向かって移動する」ことだけなので、直接巡回ルートを教え込むことはできません。
そこで一工夫ですが、通過させたい地点に「マーカー」となるゲームオブジェクトを置いておくのはどうでしょうか?マーカーを順番にターゲットに設定していけばキャラクターが経路を巡回するはずです。

巡回する敵キャラクターのC#スクリプト
ではこれをスクリプトに落とし込んでいきます。このゲームではコウモリに今回の役割を割り当てるので、名前を「BatController」にしておいてください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BatController : BaseEnemyController
{
int destinationIndex = 0;
GameObject[] navPointsObj;
protected override void Start()
{
base.Start();
navPointsObj = GameObject.FindGameObjectsWithTag("NavPoint");
GetNextPoint();
}
protected override void Move()
{
if(navPointsObj.Length == 0)
{
return;
}
rigidBody.velocity = agent.desiredVelocity;
//今の目標地点に近づいてきたら、次の目標地点を設定
if (!agent.pathPending && agent.remainingDistance < 0.5f)
{
GetNextPoint();
}
}
void GetNextPoint()
{
if(navPointsObj.Length == 0)
{
return;
}
target = navPointsObj[destinationIndex].transform;
agent.SetDestination(target.position);
//配列のインデックスを+1して、最後の地点だった場合は0に戻す
destinationIndex = (destinationIndex + 1) % navPointsObj.Length;
}
}
巡回の目印となるマーカーの作成
ここまでできたらあとはマーカーを作るだけです。空のゲームオブジェクトを作り、タグに「NavPoint」を設定したらプレハブ化して適当にシーンに配置してください。コウモリが巡回移動すれば成功です。
