我正在尝试在Unity游戏中制作一个简单的2D寻路NPC,该NPC会在各个航点之间移动。我使用了一组航点和Vector3.MoveTowards在这些点之间移动,但是每次测试时,NPC都会向第一个航点移动一秒钟,然后开始沿屏幕向下移动并永远远离航点。我不确定为什么它会继续这样做。以下是我正在使用的代码段:
public float speed = 1f;
public Transform[] waypoints;
private int curWaypoint;
void Start()
{
curWaypoint = 0;
}
void Update()
{
MoveForward();
}
void MoveForward(){
transform.position = Vector3.MoveTowards(transform.position,
waypoints[curWaypoint].transform.position,
Time.deltaTime * speed);
if(transform.position == waypoints[curWaypoint].transform.position){
curWaypoint += 1;
}
if(curWaypoint == waypoints.Length){
curWaypoint = 0;
}
}
航路点只是带有gizmo的空GameObject,因此可以在编辑器中看到它们。然后,我用要NPC遵循的航路点填充检查器中的航路点数组。我不知道是什么原因导致了这种奇怪的行为,所以我们将不胜感激。