Unity3d 3.5為我們帶來了什麼,它為我們帶了簡易的尋路元件,即NavMesh ;
讓我們來一起粗步認識一下NavMesh的簡單使用
首先我們建立一個新場景,在新場景我們建立 一個地形或者建立一個Plane,
然後在其上面用Cube或者其它的建立一些障礙物
再建立自己需要為其設定自動尋路的Cube,可以為它改個名字,我們在這裡
将其改名為walker
再建立一個walker要自動到達的位置,建立一個Cube,改名為endposition;
準備工作做好了,讓我一起來嘗試下NavMesh
打開Navigation,Windows->Navigation
在Hierarchy層次視窗中将所有障礙物選上,在Navigation視窗,将Navigation Static打上勾,選擇一個Navigation Layer 層
在Hierarchy層次視窗中将允許行進的地形或者Plane選上,做與上面一樣的操作,注意将允許行進和不允許行進的Navigation Layer設定為不一樣
選中walker為其添加NavMeshAgent元件 Component-> Navigation ->NavMeshAgent
元件屬性就不介紹了,看得懂
唯一注意的就是在NavMesh Walkable中将不允許行進的NavigationLayer名字去除掉,将如這裡不允許行進的Navigation Layer是Not Walkable
NavMesh Walkable就不應該将此層選中
在Hierarchy中将允許行進或者不允許行進的物體選中,在Navigation視窗中,選中Bake烘焙
為了讓其運動,我們寫一個簡單的腳本,腳本内容如下
using UnityEngine;
using System.Collections;
public class Nav : MonoBehaviour {
// Use this for initialization
public Transform target;
private NavMeshAgent navmeshagent;
void Start () {
navmeshagent = gameObject.GetComponent<NavMeshAgent>();
}
// Update is called once per frame
void Update () {
navmeshagent.SetDestination(target.position);
}
}
腳本不做解釋,不懂的人查下文檔
将腳本拖拉到walker中,再将endposition拖拉到上述腳本的target;
最後運作,完成,你會發現walker會自動尋找路線移動到endposition的位置。