我目前正在开发 Unity3D 游戏,并且遇到了导航网格代理的一些问题。我目前的目标是让敌人走向最近的玩家(会有 3 个)。一个我生成一个敌人,它会检查自己离哪个玩家最近。这是通过与玩家的剩余距离完成的,如下面的代码所示
agent.CalculatePath(player.transform.position, path);
agent.Stop();
agent.SetPath(path);
if (distance > agent.remainingDistance)
{
distance = agent.remainingDistance;
playerToFollow = player;
}
在此代码段中,距离将从“<code>float.MaxValue”开始,并且(当玩家比当前距离更近时,将被设置为“<code>playerToFollow”,这是一个 GameObject。
问题出在这里:当玩家的路径有 0 或 1 个角时。导航网格代理将开始走向玩家。但是......只要路径包含超过 1 个角,则不会计算距离,因此返回agent.remainingDistance == float.PositiveInfinity
.
这意味着距离(即float.MaxValue
)小于剩余距离(float.PositiveInfity
)。
有什么我可能会忘记的吗?请告诉我。我总是可以提供更多细节。