[C++/UE] UE5中AI開發的一點功能梳理(七) – Navigation 導航系統

導航系統 Navigation

Nav Mesh Bounds Volume

  • Add Object -> Volumes -> Nav Mesh Bounds Volume
  • 生成具體的尋路區,物體需要包裹住整個需要生成導航網格的區域
  • 按P預覽尋路區域(RecastNavMesh-Default)
  • 其他具體的網格生成配置可在ProjectSettings -> Navigation Mesh -> Generation區裡找到,如Agent Slope(可爬斜度)、CellSize(網格大小)等等

Nav Modifier Volume

  • Add Object -> Volumes -> Nav Modifier Volume
  • 修改網格的尋路成本cost,使其cost更高/更低,可用於微調尋路區域
    • ProjectSettings -> Navigation Mesh -> Draw Polygon Costs可顯示網格尋路的Cost
    • Area Class
      • Default 沒有任何影響
      • Low Height 足夠矮的AI可以通過
      • Null Volume範圍的網格會直接被裁切掉,不能在上面尋路
      • Obstacle 高成本區域,在其為唯一通路時才可行
      • 可使用自定義Modifier

動態Modifier

  • 前置
    • Project settings -> Navigation Mesh -> Runtime Generation => Dynamic Modifiers Only
  • 途徑1: 給物體增加Collision Area
    • Collision Area -> Navigation
      • Dynamic Obstacle => true
      • Use System Default Obstacle Area => false
      • Area Class Override => 選擇對應的Area Class
  • 途徑2: 給物體添加NavModifier組件,然後Modifier會直接合併所有物體的Overlap Area作為NavArea區域
    • Area Class => 選擇對應的Area Class

自定義Area Class

  • 創建繼承至NavArea的藍圖類
  • 可定義參數
  • Default Cost 通過成本
  • Fixed Area Entering Cost 進入後的通過成本

NavLinkProxy

  • Add Object -> All Classes -> Nav Link Proxy
  • 創建點與點之間的連接,可以實現高低處跳躍/跨越特定鴻溝的功能