寻路物体首先插入寻路组件,共有三种,第一个是普通寻路,第二个是连接寻路,第三个是动态寻路。连接寻路用于两个不相连的区域,动态寻路用于有会动的障碍物时。
Nav Mesh Agent
首先设置需要寻路的物体,添加组件Nav Mesh Agent,然后把不动的物体设置为static,调出Navigation窗口,烘焙,再添加脚本。
using UnityEngine.AI; //导入包
private NavMeshAgent agent; //声明 NavMeshAgent
agent = GetComponent<NavMeshAgent>(); //获得NavMeshAgent组件
agent.SetDestination(transform.position); //设置要导航的位置
属性
躲避的意思就是当有多个物体同时导航时,躲避高的会超过躲避低的,躲避低的会等在躲避高的后面。
Off-Mesh Links
创建两个对象,设置为起点终点,烘焙。主要用于连接两个不相连区域。
Nav Mesh Obstacle
由于烘焙时障碍物设置为static,所以不能动,要设置会动的障碍物时就要加上这个组件。有胶囊型和盒子型。
烘焙
每当物体改变位置时都需要重新烘焙。图片可以设置层级,通过设置不同的层级可以控制导航方向,因为导航默认朝最近的方向导航。层级的cost代表导航的负担,优先cost低的层级。每层都有一个值,依次序从2的0次方增加(从这点看应该是枚举类型,选择多个层级就是相加)。
agent.areaMask = areaNum;//获取层级
烘焙属性
通过设置烘焙属性可以实现楼梯和斜坡的效果。