我目前正在Unity3D遊戲中工作,並且遇到了一些導航網格代理的問題。我目前的目標是讓敵人走向最接近的球員(將會有3人)。一個我產生一個敵人,它會檢查自己的哪一個玩家是最接近的。這是通過向玩家的剩餘距離,請以下Unity - NavMeshAgent不能用於多角落
agent.CalculatePath(player.transform.position, path);
agent.Stop();
agent.SetPath(path);
if (distance > agent.remainingDistance)
{
distance = agent.remainingDistance;
playerToFollow = player;
}
在代碼中看到在這個片段的距離將在「float.MaxValue
」開始,將(每當一個球員比當前的距離更近設定爲「 。playerToFollow
」,這是一個遊戲對象
的問題就在這裏: 當路徑球員有0或1的角落,只要路徑中包含更多的資產淨值網狀代理將開始向玩家走的路徑,但...。比1角落,距離不會計算,因此返回agent.remainingDistance == float.PositiveInfinity
。
這意味着距離(即float.MaxValue
)小於剩餘距離(float.PositiveInfity
)。
我可能會忘記的任何事情?請告訴我。我總是可以提供更多細節。
當距離未知時'NavMeshAgent.remainingDistance'將返回無窮大。你確定代理人和玩家總是在導航網站上嗎? – Serlite
是的。我的團隊正在實施玩家控制的部分仍在努力。被標記爲玩家的對象不會移動,並且始終發生粘連。我可以將敵人放置在飛機上,可以走路的敵人和不能走的敵人都在同一個Y位置。 – Marcel
在附註中,'remainingDistance'可能會在最初分配路徑之後才更新 - 嘗試在路徑分配後在Update()方法中檢查它(如果此檢查當前僅完成一次),看看它的價值是否變得更有用。否則,如果可行的話,您可以堅持現有的解決方案。 – Serlite