Unity自帶尋路元件在做遊戲時候也是非常好,可以迅速的實作尋路功能,當然你可以去寫代碼或者使用其他的插件來實作。
尋路主要的表現形式為,滑鼠點選,角色可以到達。兩個物體不相鄰如何過去,攀高效果。
需要注意的地方:尋路的物體需要添加【Nav Mesh Agent】元件
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiIXZ05WZD9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwFeJpnT1UFVPBTQ65kZk1mYox2RiZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jM0MTN0QDN1EzNwQDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
需要添加代碼
private NavMeshAgent cube;
public Transform target;
// Use this for initialization
void Start () {
cube=gameObject.GetComponent<NavMeshAgent>();
}
// Update is called once per frame
void Update () {
cube.SetDestination(target.position);
}
找到元件,設定到達的位置
滑鼠點選位置擷取代碼,測代碼放到錄影機上。
public GameObject target;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
// Ray ray = Camera.main.ViewportToWorldPoint(Input.mousePosition);
if(Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
target.transform.position = hit.point;
}
}
}
主要二:
位置,position最好都放到0,0,0點。避免出現一些沒有必要的錯誤,找不到原因。
會與這個 jump distance有聯系,你是按照步驟做的但是就是不能實作效果的時候這個地方就需要注意了。
導航網格烘焙
導航網格代理
在這裡推薦幾篇文章參考:參考文章一 參考文章二