天天看點

U3D開發學習之路——使用Unity3D中的尋路方法

尋路的方法如下步驟

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屬性

  1. Radius 尋路的碰撞半徑
  2. Height尋路的碰撞高度
  3. BaseOffset 尋路碰撞的位置
  4. Speed 尋路物體的速度
  5. Acceleration 轉彎時的加速度
  6. AngularSpeed 轉彎時物體的角速度
  7. StoppingDistance 停止的距離
  8. AvoidancePriority 躲避系數:躲避系數越高,物體在靠近目标的時候越會繞到目标的身旁。

尋路Bake屬性

  1. Radius 是指尋路區域與障礙物之間半徑
  2. Height 是指尋路區域與地面之間的高度
  3. MaxSlope 是指尋路區域烘焙的最大坡度

區域遮罩

U3D開發學習之路——使用Unity3D中的尋路方法
  1. 添加自定義區域
  2. 選擇場景中的路面指定到特定的區域
  3. 重新Bake區域
  4. 找到尋路的物體,設定行走的遮罩層(Cost屬性:數值越大,從此尋路的消耗越大,尋路物體在區域消耗數值一樣的情況下,會選擇最優(最近)路面尋路,但如果尋路區域的消耗數值不同,會根據消耗的數值,越小越最優進行尋路。)

使用腳本勾選多個尋路區域

U3D開發學習之路——使用Unity3D中的尋路方法

5. 如圖所示,每一個尋路區域都是2的幂,是以

6. Walkable 為 1;Red為8是以9為Walkable和Red區域。Everything為是以區域-1.Nothing為0。

繼續閱讀