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

 实现寻路步骤:

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

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

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

 

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

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

3.添加脚本

 

扫描二维码关注公众号,回复: 11844321 查看本文章

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里记得加判断,避免重复计算。(比如目标不动的时候)

猜你喜欢

转载自blog.csdn.net/huanyu0127/article/details/106062740
今日推荐