为什么条件陈述无法正常运作

时间:2019-09-10 06:08:09

标签: c# unity3d conditional-statements

所以我用寻路算法制作了一个游戏。与一些NPC对象。问题是当我使用多个npc时,我标记的条件无法正常工作,但是当我仅使用1个npc时,条件运行良好。有人可以帮我吗?谢谢

我正在使用Debug.Log测试我的代码。当剩余距离小于StoppingDistance时,程序将在控制台中打印“ R”。当我仅使用一个对象npc时,一切工作正常。但是当我使用多个NPC时,该条件无法正常工作。我是说因为程序没有打印“ R”,所以程序打印了“ not”。这表示剩余距离大于停止距离,实际上我正在检查剩余距离值,并且该值小于停止距离。

if (HaveReachedDestination ()) 
{
    if (npc.myNavMeshAgent.drawGizmos) 
    {
        Debug.Log ("reach");
    }
    if ((nextWayPoint + 1) == npc.waypoints.Length)
    {
        nextWayPoint = 0;
    }
    else
    {
        nextWayPoint = (nextWayPoint + 1) % npc.waypoints.Length;
        if (npc.myNavMeshAgent.drawGizmos) 
        {
            Debug.Log ("waypoint plus 1");
        }
    }
}

private bool HaveReachedDestination()
{
    if (npc.myNavMeshAgent.drawGizmos) 
    {
        Debug.Log ("remainDistance : " + npc.myNavMeshAgent.remainingDistance.ToString());
        Debug.Log ("stoppingDistance : " + npc.myNavMeshAgent.stoppingDistance.ToString());
    }

    if (npc.myNavMeshAgent.remainingDistance <= npc.myNavMeshAgent.stoppingDistance) 
    {
        if (npc.myNavMeshAgent.drawGizmos) 
        {
            Debug.Log ("R");
        }

        StopWalking ();
        npc.myNavMeshAgent.m_hasPath = false;
        return true;
    } 
    else 
    {
        if (npc.myNavMeshAgent.drawGizmos) 
        {
            Debug.Log ("not");
        }

        KeepWalking ();
        return false;
    }
}

控制台屏幕截图:

带有一个NPC的控制台屏幕截图:

Console Screenshot with one NPC :

具有多个NPC的控制台屏幕截图

Console Screenshot With multiple NPC

0 个答案:

没有答案