实现寻路步骤:

  1.将场景中不动的物体勾选static(地面及障碍物),

到window中调出Navigation视窗,点击Bake,形成寻路(蓝色)网格。

2.需要自动寻路的物体,添加自动寻路组件。

Unity学习笔记:自动寻路功能

 

Mesh Link 搭桥功能,没有网格的两点连接。

Nav Mesh Obstasle 为障碍物添加碰撞。

3.添加脚本

Unity学习笔记:自动寻路功能

 

NavMeshAgent属性

  Radius 寻路的碰撞半径

  Height寻路的碰撞高度

  BaseOffset 寻路碰撞的位置

  Speed 寻路物体的速度

  Acceleration 转弯时的加速度

  AngularSpeed 转弯时物体的角速度

  StoppingDistance 停止的距离

  AvoidancePriority 躲避系数

寻路路径烘培属性

Radius 是指寻路区域与障碍物之间半径

Height 是指寻路区域与地面之间的高度

MaxSlope 是指寻路区域烘焙的最大坡度

StepHeight 是指台阶高度

可以调节这些属性设置斜坡 楼梯等寻路

寻路系统区域遮罩

Unity学习笔记:自动寻路功能除系统默认三个,可以自定义添加区域

Cost:寻路区域消耗度,数值越大,从此寻路区域消耗越大。

寻路物体在区域消耗数值一样的情况下,会选择最优(最近)路面寻路,但如果寻路区域的消耗数值不同,会根据消耗的数值,越小越最优进行寻路。

不同路面可以指定相应区域Unity学习笔记:自动寻路功能

   Bake寻路路面

找到需要寻路的物体,设置可在寻路路面行走的区域Unity学习笔记:自动寻路功能

通过代码实现勾选不同的寻路区域:

GetComponent<NavMeshAgent>().areaMask =9;

寻路区域每一区域都是2的幂

Unity学习笔记:自动寻路功能

9则为Walkable区域(1)+red区域(8) = 9

Everything所有区域-1   

Nothing任何区域都不能寻路 0

  空格切换可行走区域↓

Unity学习笔记:自动寻路功能

寻路物体比较多的话 update里记得加判断,避免重复计算。(比如目标不动的时候)

相关文章: