简介
NavMeshAgent 是在UnityEngine.AI下的一个组件类,为物体提供了寻路功能,需要在被烘焙的路面上才能寻路。
1.使用方法
- 首先需要在寻路的路面上烘焙出寻路路径。
首先把场景中不动的物体都设置成static。
然后在window-->AI下, 打开navigation设置视窗。


Bake面板可以对生成寻路网格的各项参数进行设置
Agent Radius:生成网格与物体间的间距
Agent Height:网格生成与面的高度
MaxSlop:可烘焙的最大角度
StepHight:可烘焙台阶最大高度
Generted Off Mesh Links:可以生成桥连接的参数
Drop Height:高度
Jump Distance:长度
点击Bake,就能烘焙出寻路路面,烘焙成功的路面会显示为蓝色。
- 完成路面烘焙后,在需要使用寻路功能的物体上添加NavMeshAgent组件,使用该组件的功能完成寻路。
NavMeshAgent组件各属性如下图:

Speed:物体寻路过程中的移动速度。
Angular Speed:物体旋转的角速度(物体在寻路过程中,Z轴会旋转至移动方向)。
Acceleration:加速度
Stopping Distance:离终点停止的距离
Auto Braking:自动刹车
Radius :寻路碰撞体的半径
Height:寻路碰撞体的高度
Quality:躲避质量(越高则会躲避前方的寻路物体)
Priority:躲避系数(越高则会躲避前方的寻路物体)
AreaMask:寻路遮罩,可以指定该寻路走得路线
public void Awake()
{
//获取到物体的寻路组件
this.agent = this.GetComponent<NavMeshAgent>();
this.xunLu();
//NavMeshAgent重点方法
//stop():停止寻路
//resume():继续寻路
}
public void xunLu()
{
//设置寻路目标的世界坐标
this.agent.SetDestination(PlayerTank.Instance.transform.position);
}
- 运行项目后,物体会在烘焙完成的路面上,找到最优路径到达目标点
2.寻路遮罩
- 可以通过设置烘焙的遮罩值,和设置navmeshagent中的遮罩值来实现让物体寻路时走指定的路线

cost值代表这条路径的消耗值,如果物体在寻路过程中有多条路可选,则会选择消耗值最小的路径通过。
每个层的值是2的n次幂。n的值为层的顺序由0开始递增1。

- 在烘焙时,选择物体,设置Navigation Area成需要的遮罩层
- 在寻路物体的navmeshAgent组件,中勾选上对应AreaMask。或者可以通过代码实现
-
//-1为全部线路。0表示不寻路 GetComponent<NavMeshAgent>().areaMash=-1;
3.off Mesh Link组件
在两块不相连的寻路区域,可以通过off MeshLink来连接,这样就可以在不烘焙的情况下,连接两块已经烘焙过得寻路区域。
在需要连接两个物体的其中一个物体中添加off mesh link组件,然后设置Start 和 End即可使用
4.Nav Mesh Obstacle组件
可以为物体添加寻路中的碰撞
Unity3D NavMeshAgent详解与应用
本文介绍了Unity3D中的NavMeshAgent组件,详细阐述了如何设置和使用寻路系统,包括路面烘焙、寻路遮罩、Off Mesh Link组件和Nav Mesh Obstacle组件的用法,帮助开发者实现物体在预烘焙的路面上找到最优路径。
4135

被折叠的 条评论
为什么被折叠?



