尽管我已经设置了变量,但该变量为null

时间:2019-07-04 03:42:59

标签: c# unity3d

我正尝试使用A *寻路项目让敌人动弹(以下 Brackeys的教程,可以在here中找到。)

在我的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仍然为空。

0 个答案:

没有答案