Unity3D学习笔记------寻路系统NavMeshAgent

Unity3D NavMeshAgent详解与应用
本文介绍了Unity3D中的NavMeshAgent组件,详细阐述了如何设置和使用寻路系统,包括路面烘焙、寻路遮罩、Off Mesh Link组件和Nav Mesh Obstacle组件的用法,帮助开发者实现物体在预烘焙的路面上找到最优路径。

简介

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。

  1. 在烘焙时,选择物体,设置Navigation Area成需要的遮罩层
  2.  在寻路物体的navmeshAgent组件,中勾选上对应AreaMask。或者可以通过代码实现
  3. //-1为全部线路。0表示不寻路
    GetComponent<NavMeshAgent>().areaMash=-1;

 

3.off Mesh Link组件

在两块不相连的寻路区域,可以通过off MeshLink来连接,这样就可以在不烘焙的情况下,连接两块已经烘焙过得寻路区域。

​​​​​​​

在需要连接两个物体的其中一个物体中添加off mesh link组件,然后设置Start 和 End即可使用

4.Nav Mesh Obstacle组件

可以为物体添加寻路中的碰撞

 

 

   

 

 

 

 

 

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值