【Unity 3D 从入门到实战】Unity 3D 导航系统
目录
一,前言
- 很多游戏都有一个自动寻路的功能,例如在游戏场景中单击某一个位置,角色就会自动的选择一条相对优先的路线过去。
- Unity 3D 自带导航系统,将寻路的代码封装起来,集成了 Navigation 导航系统,降低了开发难度,提高了游戏角色寻路的稳定性。
- Navigation 是一种用于实现动态对象自动寻路技术,它将游戏场景中复杂的结构关系简化为带有一定信息的网络,并基于这些网络经过一系列相应的计算实现自动寻路。
- 当前 Unity 版本:2021.3.13f1c1 LTS
二,导航系统介绍
Unity 3D 导航系统由 1个Navigation总控制面板 和 3个组件 组成,该系统是由 A*算法 延伸扩展实现的。
- 菜单栏选择:Window -> AI -> Navigation 命令打开 Navigation 总控制面板,它由4部分组成,分别是 Agents,Areas,Bake,Object。
- 三个组件分别是自动寻路组件,障碍物组件,跳跃组件,如下图显示。
三,Navigation总控制面板介绍
1,Agents面板(导航参数设置)
- Name:设置烘焙 Agents 的名字。
- Radius:烘焙的半径,也就是对象烘焙的半径。这个值影响对象能通过的路径的大小,值越小,能行走的路径越大,边缘区域越小。
- Height:具有代表性的对象的高度,可以通过的最低的空间高度。值越小,能通过的最小高度越小。
- Step Height:梯子的高度。需要根据模型阶梯的高度设置。
- Max Slope:烘焙的最大角度,即坡度。
2,Areas面板(层设置)
该面板可以设置在自动寻路时,对象可以通过那些层。 这里输入的名称会在 Object 面板的 Navigation Area 下显示。
3,Bake面板(烘焙导航网格)
- Agent Radius:具有代表性的对象的半径,半径越小生成的网格面积越大。
- Agent Height:具有代表性的对象的高度。
- Max Slope:斜坡的坡度。
- Step Height:台阶的高度。
- Drop Height:允许最大的下落距离。
- Jump Distance:允许最大的跳跃距离。
- Min Region Area:网格面积小于该值则不生成导航网格。
- Height Mesh:勾选后会保存高度信息,同时会消耗一些性能和存储空间。
4,Object面板(对象)
在该面板中可以选择,设置要参与导航网格烘焙的对象,可以设置对象是可以被自动寻路的,如路面。也可以设置对象是不可以被自动寻路的(即不可行走),如湖面。
- Generate OffMeshLinks:设置地面可跳跃。
- Navigation Area:设置对象以特定的路线寻路。
四,Navigation组件介绍
1,Nav Mesh Agent(自动寻路组件)
- Agent Type:寻路类型,可以在 Navigation 总控制面板中设置类型。
- Base Offset:偏移值。值越大越容易寻路,但是目标会偏移得越远。
- Speed:对象自动寻路的速度。
- Angular Speed:对象自动寻路的转弯速度。
- Acceleration:加速度。
- Stopping Distance:对象停下的距离。如果值设置为0,则在距离目标点为0处停下
- Auto Braking:是否自动停下。
- Radius:对象躲避障碍物的半径。大于这个半径无法躲避障碍物。
- Height:对象躲避障碍物的等级。等级越高,躲避障碍物越准确。
- Priority:优先级。值越大,障碍物躲避越优先。
- Auto Traverse Off Mesh Link:自动跳跃链接。
- Auto Repath:自动复制路径。
- Area Mask:能通过的Mask层,可以配合 Navigation 组件中的 Areas 使用。
2,Nav Mesh Obstacle(障碍物组件)
- Shape:障碍物的形状。
- Center:障碍物的中心点坐标。
- Size:障碍物的大小。
- Carve:障碍物的网格。
3,Off Mesh Link(跳跃组件)
- Start:跳跃的开始点。
- End:跳跃的结束点。
- Cost Override:是否计算路径开销,即是否将寻路计入寻路距离。
- Bi Directional:开始点和结束点是否可以互跳。
- Activated:是否激活。
- Auto Update Position:自动更新位置坐标。
- Navigation Area:可以寻路的层。