尋路的方法如下步驟
1、将場景中的地面以及障礙物勾選Static,調出Navigator視窗,點選Bake,形成尋路網格。
2、給需要自動尋路的物體添加尋路元件——Nav Mesh Agent
3、添加腳本給自動尋路的物體:
public Transform target;
NavMeshAgent myNav;
void Start(){
myNav = GetComponent<NavMeshAgent>();
}
void Update(){
myNav.SetDestination(target.position);
}
這樣就實作了一個簡單的尋路系統。
為了使尋路更加完善,效果更加逼真,還可以适當的更改以下屬性:
NavMeshAgent屬性
- Radius 尋路的碰撞半徑
- Height尋路的碰撞高度
- BaseOffset 尋路碰撞的位置
- Speed 尋路物體的速度
- Acceleration 轉彎時的加速度
- AngularSpeed 轉彎時物體的角速度
- StoppingDistance 停止的距離
- AvoidancePriority 躲避系數:躲避系數越高,物體在靠近目标的時候越會繞到目标的身旁。
尋路Bake屬性
- Radius 是指尋路區域與障礙物之間半徑
- Height 是指尋路區域與地面之間的高度
- MaxSlope 是指尋路區域烘焙的最大坡度
區域遮罩
- 添加自定義區域
- 選擇場景中的路面指定到特定的區域
- 重新Bake區域
- 找到尋路的物體,設定行走的遮罩層(Cost屬性:數值越大,從此尋路的消耗越大,尋路物體在區域消耗數值一樣的情況下,會選擇最優(最近)路面尋路,但如果尋路區域的消耗數值不同,會根據消耗的數值,越小越最優進行尋路。)
使用腳本勾選多個尋路區域
5. 如圖所示,每一個尋路區域都是2的幂,是以
6. Walkable 為 1;Red為8是以9為Walkable和Red區域。Everything為是以區域-1.Nothing為0。