在我的場景中,我的NavMesh位於中心(黃色),其中3個立方體設置爲被跟蹤。我想讓NavMesh找到距離所有立方體最近的路徑並開始跟隨它。我已經寫了代碼來這樣做,但它行爲怪異,我沒有看到任何錯誤,但顯然有一些東西是。發生了什麼事情是,當我點擊遊戲並保持立方體原樣時,NavMesh確實找到了最接近的立方體的路徑並開始朝向它(立方體3),但是當它幾乎到達它時,導航網格很難轉向並開始朝向立方體1,這顯然不是更接近的立方體。使用NavMesh查找更近的玩家
這裏是我的代碼。 PathLength工作得很好。我認爲問題在於CalcPath函數。
float PathLength(Vector3 target){
NavMeshPath path = new NavMeshPath();
myNavMesh.CalculatePath (target, path);
int i = 1;
float currentPathLength = 0;
Vector3 lastCorner;
Vector3 currentCorner;
lastCorner = path.corners [0];
while (i < path.corners.Length) {
currentCorner = path.corners [i];
currentPathLength += Vector3.Distance (lastCorner, currentCorner);
Debug.DrawLine (lastCorner, currentCorner, Color.red,1f);
lastCorner = currentCorner;
i++;
}
return currentPathLength;
}
void CalcPath(){
Vector3 closestTarget = Vector3.zero;
float lastPathLength = Mathf.Infinity;
float currentPathLength = 0;
foreach (GameObject player in GameObject.FindGameObjectsWithTag("Player")) {
currentPathLength = PathLength (player.transform.position);
if (currentPathLength < lastPathLength) {
closestTarget = player.transform.position;
}
lastPathLength = currentPathLength;
}
myNavMesh.SetDestination (closestTarget);
}
你是絕對正確的。對我而言,lastPathLength是無用的。我想到了這一點,並張貼了我的答案,但我會在這裏保留我的答案並接受你的答案,因爲它解釋了發生的事情。也許它會幫助別人。感謝:D –