unity导航系统使用(随记)

时间:2024-03-14 18:23:57

Nav Mesh Agent 导航代理组件,物体添加导航代理组件后,物体根据目标位置和导航网格自动寻找路线,沿着路线到达位置。

一、导航网格的生成

1.标记生成导航网格的物体(两种方法:1、inspector中设置静态参数。2、navigation视图中选择设置render mesh 为navigation mesh)

2.navigation视图中bake生成导航网格

unity导航系统使用(随记)unity导航系统使用(随记)

off Mesh Link Generation 表示自动生成 Link 主要用于跳下、跳过等操作

可以手动添加,可设置起始,终止,是否双向等等参数。

参数:

Agent Radius 代理半径,地图宽度大于2倍半径的道路才可以通过。

Agent Height 导航高度,导航代理能通过的最低高度

Max Slope 最大斜坡角度,导航代理最大能爬上的斜坡角度

Step Height 脚步高度,导航代理能通过的最大台阶高度

Drop Height 跳下高度,导航代理能跳下的最大高度

Jump Distance 跳跃距离,导航代理能跳过得最大距离。

二、导航组件

1、navigation agent

2、navigation obstacle

3、off-mesh link

navigation agent:控制角色寻路、躲避障碍物等。

unity导航系统使用(随记)

Agent type:代理类型(传统导航网格只能选第一个),设置导航圆柱体的尺寸,在导航网格中使用。在navigation视图中的agent中设置。

base offset : 导航圆柱体相对于物体的垂直偏移量。

obstacle Avoidance的radius和height设置障碍躲避的圆柱体用于障碍检测

其余参数设置移动速度,加速度,角速度、停止距离、自动减速、躲避优先级等等

navigation obstacle:障碍物组件

unity导航系统使用(随记)

shape:设置障碍物的形状

下面两个参数设置大小位置等

carve 切断:是否将导航网格切断

当Carve未启用时,Nav Mesh Obstacle的默认行为与Collider相似。 导航网格代理试图避免与导航网格障碍物碰撞,并且当它们靠近时,它们与导航网格障碍物碰撞。 避障行为是非常基本的,并且具有短的半径。 因此,导航网格代理可能无法在混乱导航网格障碍的环境中找到方法。 这种模式最适用于障碍物持续移动的情况下(例如车辆或玩家角色)。

启用Carve时,障碍物在静止时会在NavMesh中雕刻一个洞。移动时,障碍物是障碍物。当一个洞被刻入导航网格中时,探路者能够在障碍物周围的位置周围导航导航网格代理,或者如果当前路径被障碍物阻挡,则找到另一条路线。开启切断导航网格障碍物是一种很好的做法,通常阻挡导航,但可以由玩家或其他游戏事件(如爆炸物(例如,箱子或桶))移动。

Move Threshold:障碍物体移动导致重新计算洞位置的最大距离。为了减小cpu的计算量只有在必要的时候才重新计算洞。

两种可以重新计算

1.Only carve when the Nav Mesh Obstacle is stationary

勾选Carve Only Stationary,当障碍物移动后,洞被移除。物体停止时间超过Carving Time To Stationary时,被视为静止的洞被重新计算。

2.Carve when the Nav Mesh Obstacle has moved

要启用此模式,请取消导航网格障碍物组件的仅雕刻静止复选框。 当障碍物移动超过雕刻移动阈值设置的距离时,雕刻的孔会更新。 这种模式适用于缓慢移动的大型障碍物(例如,步兵正在躲避的坦克)。

off-mesh link 用于合并无法再导航网格上显示的接近,例如爬梯,跳楼、跳过沟壑等等。

unity导航系统使用(随记)

该组件可以设置在任意物体上

参数为起点位置、终点位置、路径的花销、是否是双向、是否启用连接

使用自动更新连接,当终点位置改变时可以继续连接,否则角色会停在起始位置

导航区域,设置这个连接的导航类型


官方设置新版导航网格支持一个网格配对一个代理Agent Type 。

导入官方https://github.com/Unity-Technologies/NavMeshComponent的Assets\NavMeshComponents的文件

具体使用方法参考官方文档Documentation/en/Manual/class-NavMesh-ModifierVolume.html

具体参数意思看官方文档