Nav Mesh Agent 导航代理组件,物体添加导航代理组件后,物体根据目标位置和导航网格自动寻找路线,沿着路线到达位置。
一、导航网格的生成
1.标记生成导航网格的物体(两种方法:1、inspector中设置静态参数。2、navigation视图中选择设置render mesh 为navigation mesh)
2.navigation视图中bake生成导航网格
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:控制角色寻路、躲避障碍物等。
Agent type:代理类型(传统导航网格只能选第一个),设置导航圆柱体的尺寸,在导航网格中使用。在navigation视图中的agent中设置。
base offset : 导航圆柱体相对于物体的垂直偏移量。
obstacle Avoidance的radius和height设置障碍躲避的圆柱体用于障碍检测
其余参数设置移动速度,加速度,角速度、停止距离、自动减速、躲避优先级等等
navigation obstacle:障碍物组件
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 用于合并无法再导航网格上显示的接近,例如爬梯,跳楼、跳过沟壑等等。
该组件可以设置在任意物体上
参数为起点位置、终点位置、路径的花销、是否是双向、是否启用连接
使用自动更新连接,当终点位置改变时可以继续连接,否则角色会停在起始位置
导航区域,设置这个连接的导航类型
官方设置新版导航网格支持一个网格配对一个代理Agent Type 。
导入官方https://github.com/Unity-Technologies/NavMeshComponent的Assets\NavMeshComponents的文件
具体使用方法参考官方文档Documentation/en/Manual/class-NavMesh-ModifierVolume.html
具体参数意思看官方文档