Переменная равна нулю, хотя я уже установил ее - PullRequest
1 голос
/ 04 июля 2019

Я пытался заставить своих врагов двигаться, используя проект A * Pathfinding (следующий Учебник Брэкси, который можно найти здесь ).

В моем Start() методе я использую InvokeRepeating("GeneratePath", 0f, .5f);

void GeneratePath()
    {
        if (seeker.IsDone())
            seeker.StartPath(rb.position, Game.currentPlayer.GetComponent<Rigidbody2D>().position, OnPathComplete);
    }

Тогда:

void OnPathComplete(Path p)
    {
        if (!p.error)
        {
            path = p;
            currentWayPoint = 0;
        }
    }

Обратите внимание, что моя переменная path установлена.

В моем Update() методе:

public void MoveAI()
    {
        if (Game.currentPlayer == null || path == null) return;

        if (currentWayPoint >= path.vectorPath.Count)
        {
            reachEndOfPath = true;
            return;
        }
        else
        {
            reachEndOfPath = false;
        }

        Vector2 dir = ((Vector2)path.vectorPath[currentWayPoint] - rb.position).normalized;
        Vector2 force = dir * speed * Time.deltaTime;

        rb.AddForce(force);

        float distance = Vector2.Distance(transform.position, path.vectorPath[currentWayPoint]);

        if (distance < nextWaypointDistance)        
            currentWayPoint++;                    
    }

Поскольку это мой Update() метод, мои враги должны двигаться. Но они этого не делают.

Я установил точку останова и подтвердил, что path действительно равен нулю.

Как же? Я уже установил его.

Редактировать: я сдвинул два

path = p;
currentWayPoint = 0;

вне оператора if (чтобы увидеть, была ли проблема p.error), а path по-прежнему равно нулю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...