【Unity 3D 从入门到实战】Unity 3D 导航系统

目录

一,前言

二,导航系统介绍

三,Navigation总控制面板介绍

1,Agents面板(导航参数设置)

2,Areas面板(层设置)

3,Bake面板(烘焙导航网格)

4,Object面板(对象) 

四,Navigation组件介绍

1,Nav Mesh Agent(自动寻路组件)

2,Nav Mesh Obstacle(障碍物组件)

3,Off Mesh Link(跳跃组件)


  1. 很多游戏都有一个自动寻路的功能,例如在游戏场景中单击某一个位置,角色就会自动的选择一条相对优先的路线过去。
  2. Unity 3D 自带导航系统,将寻路的代码封装起来,集成了 Navigation 导航系统,降低了开发难度,提高了游戏角色寻路的稳定性。
  3. Navigation 是一种用于实现动态对象自动寻路技术,它将游戏场景中复杂的结构关系简化为带有一定信息的网络,并基于这些网络经过一系列相应的计算实现自动寻路。
  4. 当前 Unity 版本:2021.3.13f1c1 LTS

Unity 3D 导航系统由 1个Navigation总控制面板 3个组件 组成,该系统是由 A*算法 延伸扩展实现的。

  • 菜单栏选择:Window -> AI -> Navigation 命令打开 Navigation 总控制面板,它由4部分组成,分别是 AgentsAreasBakeObject

  • 三个组件分别是自动寻路组件障碍物组件跳跃组件,如下图显示。

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:可以寻路的层。