More Related Content More from River Wang (14) 2017 unity5.5 manual_navigation2. Navigation System
• NavMesh. Navigation運算來源之模型幾何.
• NavMesh Agent.
• Off-Mesh Link. 額外路徑連節.
• NavMesh Obstacle.
– Carve on: 即時在NavMesh資料上挖洞, 產生真實障礙.
– Carve off: 類似physical collider, agent會避開.
4. Build NavMesh
• 收集所有Navigation Static物件來計算產生NavMesh.
• 設定Agent參數.
– Agent Radius | Agent Height: 碰撞半徑, 高度.
– Max Slope: 可行走斜坡之最大夾角.
– Step Height: 可跨過之階梯高度.
• Advanced bake setting.
– Min Region Area: 最小面積下限.
– Voxel size: 預設為Agent Radius / 3.
8. Navigation System
• 建立Height mesh.
• Area與Cost.
– Path finding cost: 行經該區域的代價.
• 代價越高前進速度越慢.
– Area: 區域類別.
• 可用在判別特定Agent是否可通過.
• (內建)Walkable: 可行走.
• (內建)Not Walkable: 不可行走.
• (內建)Jump: Off-mesh link預設area type.
9. Navigation System
• 在讀入多個場景時 , Application.LoadLevelAdditive(),
NavMesh之間透過off-mesh links連節起來.
– Scene1 與Scene2分別設定off-mesh link, 當Scene1與Scene2都
完成讀入後, off-mesh link便會生效.
10. 使用NavMesh Agent
• Agent Physics.
– Agent自行控制物體. (同時啟用NavMeshAgent與Rigidbody會
發生transform race condition)
– 與周圍物理引擎互動: 使用Kinematic Rigidbody + collider.
– Script中由NavMeshAgent.velocity控制agent前進方向.
11. 使用NavMesh Agent
• Agent Animator.
– 同時啟用NavMeshAgent與root control from animator會發生
transform race condition.
– Agent主導控制: 參考NavMeshAgent.velocity與其他條件, 調
整物體animator狀態.
– Animator主導控制: 關閉NavMeshAgent.updatePosition與
NavMeshAgent.updateRotation ; 使用
NavMeshAgent.nextPosition與Animator.rootPosition來預測與
控制物體前進.
12. 使用NavMesh Agent
• Agent Obstacle.
– Agent不可以是Obstacle. 反之亦然, 彼此互斥.
– Agent進入靜止狀態後(死亡), 適合改變為Obstacle.
• Obstacle Physics.
– Obstacle同時使用Rigidbody控制, Rigidbody會給予物體運動
控制, 並且可被agent預測.
13. How to
• Move to one destination.
• Click mouse to assign destination.
• 巡邏行為.
• Animation與agent搭配使用.
– 由NavMeshAgent.velocity來計算animator控制條件.
– Animation主導物體, 搭配navigation系統前進. 此做法可減少
腳步滑動現象 (foot-sliding).