NavMesh(導航網絡)是3D游戲世界中用於實現動態物體自動尋路的一種技術,它將游戲場景中復雜的結構組織關系簡化為帶有一定信息的網格,進而在這些網格的基礎上通過一系列的計算來實現自動尋路。
實現Capsule物體自動向Sphere物體尋路:
實現過程:
一、搭建場景
選擇菜單欄中GameObject->3D Object->Cube命令,在場景中創建三個Cube,並分別命名為Cube01(平台)、Cube02(斜面)、Cube03(地面)
三個Cube參數值設置如下
Cube01(平台)、Cube02(斜面)、Cube03(地面)
設置完成圖:
二、功能實現
1、分別選中三個Cube對象,分別單機Inspector試圖右上角Static項右側按鈕,在彈出下拉列表中選中Navigation Static復選框,Unity就會利用這幾個Cube對象來生成導航網絡
2、選擇菜單欄中的Window->Navigation命令,彈出Navigation試圖,單機Navigation試圖右下角Bake按鈕生成導航網絡
其中藍色網格便是目標角色在自動尋路時可以到達的區域
三、添加目標對象
1、新建一個Capsule(膠囊體),Scale設置為(0.2,0.2,0.2)作為移動的角色(放的位置可以隨意)
新建一個Sphere(球體),Scale設置為(0.1,0.1,0.1)作為目的的角色(放的位置可以隨意)
選中Capsule(膠囊體),選擇菜單欄中的Component->Navigation->Nav Mesh Agent命令,為Capsule對象添加導航組件。添加成功后,Capsule上會出現綠色包圍的圓柱框
四、實現Capsule(膠囊體)自動尋找Sphere目標點
選擇菜單欄中Assets->Create->C# Script,編寫RunTest腳本

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class RunTest : MonoBehaviour { public Transform TargetObject; // Use this for initialization void Start () { if (TargetObject != null) GetComponent<NavMeshAgent>().destination = TargetObject.position; } // Update is called once per frame void Update () { } }
講將本綁定到Capsule上,並將Sphere物體綁定到Inspector試圖中Capsule物體腳本組件中的TargetObject項上
運行程序就可以實現簡單的自動尋路的效果