Skip to main content

AI导航功能开发说明

概述

导航(Navigation)模块主要用于向AI角色提供寻路功能。基于游戏世界中的碰撞几何信息生成导航网格体。

前置条件

在组件编辑器中创建任意关卡后打开该关卡,在LSceneSettings-1中的导航(Navigation)属性下勾选使用导航(Use Navigation)

相关功能创建

导航网格体边界体积(Navigation Mesh Bounds Volume)

标记当前覆盖范围并生成导航数据(NavData)(目前仅提供平铺(Tile)模式,后期会加入其他方式)。

创建导航网格体边界体积

依次点击工具栏创建游戏对象(Create Game Object) -> 体积(Volumes) -> 导航网格体边界体积(Navigation Mesh Bounds Volume)

2022-11-25_141223

2022-11-01-10-59-36-410688

删除Nav区域

在大纲面板中删除LNavMeshBoundsVolume对象后,则可删除对应的Nav区域。

增加Nav区域

方式一:新增加一个导航网格体边界体积对象。

方式二:移动已有的导航网格体边界体积对象到目标区域(原有的导航网格体(NavMesh)会自动删除)。

注意:

新增加或移动的导航网格体边界体积会自动加载该区域已有的导航网格体,如果该区域没有创建过导航网格体,则会自动生成导航网格体。

如果没有自动加载,或生成的导航网格体不正确,那么就通过点击目标导航网格体边界体积对象生成(Generation)属性下的重建(Rebuild)来重新生成导航网格体。

调整生成属性

选中LRecastNavMesh,其属性面板下有其生成属性。

2022-11-01-10-59-49-515316

生成属性:

名称说明
使用导航网格(Use Navigation Mesh)是否使用导航网格
自动创建(Auto Create)自动构建NavMesh
关闭开关后:NavMeshBounds的增加、删除、更新、Generation属性调整等NavMesh相关功能将会受到影响、手动重新构建NavMesh不受到影响
重建所有(Rebuild All)重新生成所有导航网格体
平铺大小(Tile Size)每一个生成导航网格体的区域大小、默认256(按Flexi引擎单位计量)
边界大小(Border Size)每一个导航网格体区域临近的边界尺寸
单元格大小(Cell Size)体素化之后每个单元格大小
单元格高度(Cell Height)体素化之后每个单元格高度
智能体半径(Agent Radius)用于生成导航网格的可行走参考目标的半径
智能体高度(Agent Height)用于生成导航网格的可行走参考目标的高度
智能体单步最大跨度(Agent Max Climb)用于生成导航网格的可行走参考目标的单步跨幅最大高度
智能体最大可行走坡度(Agent Max Slope)用于生成导航网格的可行走参考目标的单步最大坡度
最小区域大小(Min Region Size)小于该数值的区域将会被合并掉
合并后区域大小(Merged Region Size)小于该数值的区域将会合并到更大的区域中
最大边长(Max Edge Length)轮廓边最大允许长度

LRecastNavMesh对象的显示(Display)属性。

不同显示模式:

可视化数据模式主要用于提供不同的方式来查看生成的Nav数据是否正确。

三角边(Triangle Edges)

多边形边界(Poly Bounds)

填充多边形(Filled Polys)

BV树(BV Tree)

导航工具(Navigation Tool)

用于在无需编码的情况下,提供一套验证和测试导航网格的工具集。

测试导航网格体(Test NavMesh)

主要用于在不依赖外界代码或其他功能的情况下,通过内置的默认工具来测试和观察导航网格体。

启动方式:

依次点击窗口(Windows) -> 编辑模式(Edit Modes) -> 导航模式(Navigation Mode)

基本设定

导航工具(Navigation Tool)面板中勾选测试导航网格体(Test NavMesh)

注意

单击鼠标左键为设置结束点(End Point)

Shift + 鼠标左键为设置开始点(Start Point)

名称说明
开始点(Start Point)导航路径起点位置(可以通过鼠标左击场景来设定)
结束点(End Point)导航路径终点位置(可以通过Shift+鼠标左击场景来设定)
平滑路径(Smooth Path)平滑路径
直线路径(Straight Path)直线路径
切片路径(Slice Path)切片路径
射线(Ray)绘制射线
半径(Radius)随机生成范围半径
设置一个随机开始起点(Set A Random Start Point)设置一个随机开始位置
设置一个随机结束起点(Set A Random End Pont)设置一个随机结束位置

平滑路径

在起点和终点之间绘制一条平滑路径。

起点:

终点:

直线路径

在起点和终点之间绘制一条直线路径。

切片路径

在起点和终点之间绘制一段切片路径动画。

射线

在起点和终点之间绘制一条射线。