天天看點

[Unity3d] 3.5 NavMesh的初步認識和簡單運用

Unity3d 3.5為我們帶來了什麼,它為我們帶了簡易的尋路元件,即NavMesh ;

讓我們來一起粗步認識一下NavMesh的簡單使用

首先我們建立一個新場景,在新場景我們建立 一個地形或者建立一個Plane,

然後在其上面用Cube或者其它的建立一些障礙物

再建立自己需要為其設定自動尋路的Cube,可以為它改個名字,我們在這裡

将其改名為walker

再建立一個walker要自動到達的位置,建立一個Cube,改名為endposition;

準備工作做好了,讓我一起來嘗試下NavMesh

打開Navigation,Windows->Navigation

在Hierarchy層次視窗中将所有障礙物選上,在Navigation視窗,将Navigation Static打上勾,選擇一個Navigation Layer 層

[Unity3d] 3.5 NavMesh的初步認識和簡單運用

在Hierarchy層次視窗中将允許行進的地形或者Plane選上,做與上面一樣的操作,注意将允許行進和不允許行進的Navigation Layer設定為不一樣

選中walker為其添加NavMeshAgent元件  Component-> Navigation ->NavMeshAgent

元件屬性就不介紹了,看得懂

唯一注意的就是在NavMesh Walkable中将不允許行進的NavigationLayer名字去除掉,将如這裡不允許行進的Navigation Layer是Not Walkable

NavMesh Walkable就不應該将此層選中

在Hierarchy中将允許行進或者不允許行進的物體選中,在Navigation視窗中,選中Bake烘焙

[Unity3d] 3.5 NavMesh的初步認識和簡單運用

為了讓其運動,我們寫一個簡單的腳本,腳本内容如下

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的位置。

繼續閱讀