[英]Getting closest possible destination - Unity3d
我試圖了解當導航網格障礙物擋在路上時如何使用 Unity 的導航系統最接近目的地。 我有一個帶有 Capsule 障礙(開啟 Carve)和一個用腳本管理的膠囊代理的例子。 它似乎工作正常,但是當我“單擊”障礙物以設置代理的目的地(雕刻區域內的一點)時,代理移動到障礙物周圍的另一個位置。
如何讓代理前往障礙物周圍的最近點或到達所選目的地的最近點(即障礙物區域內)?
移動代理的腳本
using UnityEngine;
using UnityEngine.AI;
public class CapsuleMovement : MonoBehaviour {
NavMeshAgent agent;
public NavMeshPathStatus partial;
void Start() {
agent = GetComponent<NavMeshAgent>();
}
void Update() {
if (Input.GetMouseButtonDown(0)) {
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100)) {
agent.destination = hit.point;
}
}
}
}
取點擊對象位置的中心並將其稍微移向移動的單位/玩家,然后使用該位置作為您的坐標,而不是直接單擊鼠標。
如果那不起作用。
這不是一個有保證的答案,因為在這種情況下很難給出答案,但我希望這能讓你更進一步。
我懷疑這可能是您單擊的坐標,它沒有正常工作。 嘗試在鼠標單擊的位置生成一個“ClickObject”,它可以是一個彩色球體。 這樣您就可以確認點擊實際發生的位置。
這里還有 2 種在使用導航網格和定位時可能會派上用場的方法。
您可以嘗試使用 SamplePosition。
https://docs.unity3d.com/540/Documentation/ScriptReference/NavMesh.SamplePosition.html
在指定范圍內查找 NavMesh 上最近的點。
也許還有 FindClosestEdge
https://docs.unity3d.com/530/Documentation/ScriptReference/NavMesh.FindClosestEdge.html
從導航網格上的一個點定位最近的導航網格邊緣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.