实现寻路步骤:
1.将场景中不动的物体勾选static(地面及障碍物),
到window中调出Navigation视窗,点击Bake,形成寻路(蓝色)网格。
2.需要自动寻路的物体,添加自动寻路组件。
Mesh Link 搭桥功能,没有网格的两点连接。
Nav Mesh Obstasle 为障碍物添加碰撞。
3.添加脚本
NavMeshAgent属性
Radius 寻路的碰撞半径
Height寻路的碰撞高度
BaseOffset 寻路碰撞的位置
Speed 寻路物体的速度
Acceleration 转弯时的加速度
AngularSpeed 转弯时物体的角速度
StoppingDistance 停止的距离
AvoidancePriority 躲避系数
寻路路径烘培属性
Radius 是指寻路区域与障碍物之间半径
Height 是指寻路区域与地面之间的高度
MaxSlope 是指寻路区域烘焙的最大坡度
StepHeight 是指台阶高度
可以调节这些属性设置斜坡 楼梯等寻路
寻路系统区域遮罩
除系统默认三个,可以自定义添加区域
Cost:寻路区域消耗度,数值越大,从此寻路区域消耗越大。
寻路物体在区域消耗数值一样的情况下,会选择最优(最近)路面寻路,但如果寻路区域的消耗数值不同,会根据消耗的数值,越小越最优进行寻路。
不同路面可以指定相应区域
Bake寻路路面
找到需要寻路的物体,设置可在寻路路面行走的区域
通过代码实现勾选不同的寻路区域:
GetComponent<NavMeshAgent>().areaMask =9;
寻路区域每一区域都是2的幂
9则为Walkable区域(1)+red区域(8) = 9
Everything所有区域-1
Nothing任何区域都不能寻路 0
空格切换可行走区域↓
寻路物体比较多的话 update里记得加判断,避免重复计算。(比如目标不动的时候)