首页 > 代码库 > 导航系统(一)

导航系统(一)

Unity 的导航系统主要由Navigation编辑器和Nav Mesh Agent、Nav Mesh Obstacle、Off Mesh Link组件组成。其中Navigation编辑器烘焙导航网格,Off Mesh Link组件手动生成网格链接,其余的两个组件则添加到动态游戏对象(敌人、怪等)身上。

一、Navigation

技术分享

Object:

● Navigation Static: 选中的物体将参与烘焙导航(可以在Inspector检视窗口中选择Static类型)

● Generate OffMeshLinks: 生成导航链接。(自动生成桥(Jump Distance)或下落(Drop Height)链接等)

● Navigation Area : 导航Area(对应的是导航代价)

Bake:

技术分享

 

● Agent Radius: 代理半径。半径越小导航网格面积越大

● Agent Height: 代理高度

● Max Slope: 代理能移动的最大坡度

● Step Height: 台阶高度。即导航网格能覆盖一定高度的楼梯

技术分享

Generated off Mesh Links: 生成导航链接

● Drop Height: 允许最大的下落距离

● Jump Distance: 允许最大的跳跃距离(桥)

技术分享

● Advanced(高级设置):

  ? Manual Voxel Size: “Voxel Size”的值越小导航网格越精确

  ? Min Region Area: 当选中的平面边长小于这个数值时,该平面将不会烘焙网格

  ? Height Mesh: 当勾选此项以后游戏对象将会贴着地面走,而不勾则会在导航网格上走

Areas:

技术分享

Areas: 区域。可以设置导航代理在该区域行走的代价,导航代理将会优先选择代价小的行走

二、导航组件

Nav Mesh Agent:

技术分享

 

● Agent Size:

  ? Radius: 代理半径

  ? Height: 代理高度

  ? Base Offset: 相对偏移。碰撞几何体相对于实际几何体垂直的偏移

● Steering:

  ? Speed: 速度

  ? Angulat Speed: 游戏物体的转向速度

  ? Acceleration: 加速度

  ? Stopping Distance: 制动距离。到目的地的距离小于这个值,代理减速。

  ? Auto Braking: 自动制动

● Obstacle Avoidance: 躲避的质量水平

  ? Quality:

  ? Priority: 

● Path Finding:

  ? Auto Traverse Off Mesh Link: 自动移动到OffMesh的结束点。取消勾选以后可以使用代码控制

  ? Auto Repath: 自动重新寻路

  ? Area mask: 可以行走的导航网格类型

Nav Mesh Obstacle:

技术分享

● Shape: 障碍类型

● Carve: 是否打开在导航网格挖洞模式

  ? Move Threshold: 移动距离超过这个阙值以后更新导航网格,即重新挖洞。(必要条件)

  ? Time To Stationary: 当游戏对象停止运动这么长时间时开始更新导航网格(必要条件)

  ? Carve Only Stationary: 当游戏对象静止的时候更新导航网格(前面两个条件满足时自动更新)

Off Mesh Link:

技术分享

该组件的作用是手动创建OffMeshLink

● Start: 起始点

● End: 结束点

● Cost Override: 开销覆盖。如果值为正数,使用该正数计算路径成本处理路径的请求。否则使用默认成本(这个游戏对象所属的层的开销)。如果Cost Override的值设置为      3.0,该OffMeshLink链接移动相同的距离的开销,是在默认的导航网格的三倍

● Bi Directional: 如果勾选这个,链接的两个方向都可以通过。否则只能从起始点到结束点

● Activated: 激活

● Auto Update Positions: 自动更新位置

● Navigation Area: 导航区域

 

导航系统(一)