Vector3.MoveTowards не работает должным образом для 2D-поиска путей - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь создать в своей игре Unity простой двухмерный 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;
    }
}

Путевые точки - это просто пустые объекты GameObject с гизмо на них, чтобы их можно было увидеть в редакторе. Затем я заполняю массив путевых точек в инспекторе путевой точкой, которой должен следовать NPC. Я не могу понять, что вызывает это странное поведение, поэтому любая помощь будет оценена.

...