Skip to content

简介

AI 导航系统(AI Navigation System)用于让 AI 代理(AI Agent)通过寻路功能在场景中走动。

AI 导航原理

AI 导航系统通过分析游戏场景中静态的 游戏对象(Game Object)网格,生成导航网格来指导代理寻找最优路径。这些网格被细分为多边形图块,代理依据这些多边形的成本、顶点、边来决定最优的路线。这个系统涉及多个环节:从定义可步行区域,通过导航网格识别这些区域,到路径寻找,避开障碍物,直至控制移动代理的过程。

【Navigation_System001.png】

为处理多个代理的移动,SandMod 的 AI 导航系统采用了避障策略,如倒数速度障碍(RVO),以预测和避免碰撞。

【Navigation_System002.png】

障碍物处理既考虑了对静态障碍物的全局避障,也包括了对其他代理或动态寻路障碍的局部避障处理,以保证代理能够灵活应对环境变化。

【Navigation_System003.png】

代理的移动依靠一个简单的动态模型,并考虑加速度,确保运动的自然平滑。代理的位置随着模拟的进行被更新,保证其始终在导航网格内。

【Navigation_System004.png】

此外,导航网格的多边形通过特定链接相互连接,以指导代理执行特定动作,如跳跃或穿越门扉,增加了系统的灵活性和应用范围。

【Navigation_System005.png】

如何编辑

开启导航网格窗口.

制作 AI 寻路导航前,需要先启动导航网格窗口,您可以在 场景编辑器(Scene Editor)菜单栏(Menu Bar)中点选 窗口(Window)> AI > 导航网格(Navigation Mesh) 显示导航网格窗口。关于导航网格窗口的创建和使用细节,请参阅 导航网格窗口 章节。

【Navigation_System006.png】

创建导航网格.

AI 代理(AI Agent)在 SandMod 中必须基于当前场景的 导航网格(Navigation Mesh)进行寻路导航。

在导航网格窗口设置好 AI 代理的相关信息,点击 烘焙(Bake) 按钮即可将根据当前 AI 代理信息绘制的导航网格储存在与当前场景同名且同一路径的文件夹中,此时如果打开了导航网格窗口和 场景预览窗口(Scene),就能可视化场景中的导航网格。如下图所示,导航网格体默认显示为绿色。更多关于创建导航网格的内容和注意事项,请参阅 创建导航网格 章节。

【Navigation_System007.png】

创建网格寻路代理.

  • 创建 AI 代理前需要准备两个 游戏对象(Game Object),一个是代理网格和骨骼节点的根父级节点,一个是空游戏对象节点作为导航终点的标记。

【Navigation_System008.png】

  • 在代理根父级节点中添加 网格寻路代理(NavMeshAgent)组件(Component),并设置相关的属性。

【Navigation_System009.png】

  • 在网格寻路代理组件的 目标(Target)属性中引用导航终点对应的游戏对象。您可以在运行前引用,也可以在项目运行时动态引用。

【Navigation_System010.png】

  • 在项目运行时您将看到 AI 代理会寻找最优路径移向导航终点标记,此时当您在 场景预览窗口(Scene)或使用代码移动导航终点标记,AI 代理会跟着转换导航目标和路线。

【Navigation_System011.png】

关于 网格寻路代理(NavMeshAgent)组件的详细创建方法和属性设置方法,请参阅 网格寻路代理 章节。

修改寻路系统.

  • 您可以通过 网格寻路障碍(NavMeshObstacle)组件(Component)决定代理在导航时应避开的动态或静态障碍物。通过网格寻路障碍组件您可以设置障碍物影响导航网格变更的频率和范围。具体关于网格寻路障碍组件的创建方法和设置细节,请参阅 网格寻路障碍 章节。

【Navigation_System012.mp4】

视频中使用网格寻路障碍制作了自动门机关,AI 代理会在门关闭时等待,门开时通过。

  • 您可以通过 网格连接(OffMeshLink)组件创建跨越可步行导航网格表面外部的路径。例如,让 AI 代理跳过鸿沟或栅栏。具体关于网格连接组件的创建方法和设置细节,请参阅 网格连接 章节。

【Navigation_System013.mp4】

视频中使用网格连接为 AI 代理设置了翻越墙壁、跳下高台、跳过鸿沟的路径。

  • 您可以对每一个 游戏对象(Game Object)设置其 烘焙区域(Baked Area),这样您就可以在烘焙导航网格时定义步行穿过特定区域需要花费的成本,在 AI 代理查找路径过程中将优先选择通过成本较低的区域。同时您可以单独设置每个 AI 代理可通行的区域,实现更多更接近预期的导航方案。具体关于烘焙区域的创建方法和设置细节,请参阅 导航网格分区 章节。

【Navigation_System014.mp4】

视频中指定某些 AI 代理只能走某些道路,呈现出各走各路的效果。