NavMeshAgent を使わずに、指定した座標をうろうろする敵のスクリプトを書きたい方はこちらが参考になるかもしれません。
これは、インスペクターで指定した配列の座標に移動してくれるスクリプトです。Vector3.Lerpを使って実装しました。詳しい説明については、コメントに記載してあるので参考にしてみてください。
EnemyMove.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyMove : MonoBehaviour
{
[SerializeField]
Vector3[] positions = new Vector3[4]; // 配列の要素数
[SerializeField]
float moveTime = 1.0f; // 移動にかかる時間を秒で設定
float timer = 0.0f; // タイマーを初期化
int index = 0; // 配列のインデックスを初期化
[SerializeField]
bool LoopSwitch = false;
// Start is called before the first frame update
void Start()
{
transform.position = positions[0]; // オブジェクトの位置を配列の最初の要素に設定
}
// Update is called once per frame
void Update()
{
if (index < positions.Length - 1) // 配列の最後の要素に到達するまで
{
timer += Time.deltaTime; // タイマーを更新
float t = timer / moveTime; // 移動の割合を計算
transform.position = Vector3.Lerp(positions[index], positions[index + 1], t); // オブジェクトの位置を補間
if (t >= 1.0f) // 移動が完了したら
{
index++; // 配列のインデックスを増やす
timer = 0.0f; // タイマーをリセット
}
}
if (index == positions.Length - 1) // 配列の要素が最後に達成した場合
{
if (LoopSwitch == true) // ループスイッチがオンの場合
{
index = 0; // indexを0にしてループにする
}
}
}
}
インスペクターはこのように、指定します。Positionsに、動かしたい位置を入力してMoveTimeに移動時間、LoopSwitchで、ループするか選択することができます。