这次我们实现的是 分层寻路,如下图不同的物体只能走规定好的路线

 

Unity的自动寻路NavMessAgent系统(三)_自定义

Unity的自动寻路NavMessAgent系统(三)_javascript_02

一.搭建场景,设置层

1.搭建一个起点一个终点,另加三条路线

2.起点终点正常bake选择Walkable层,三条线路分别选择对应的层,新加层red,blue,green

3.设置好了之后bake

Unity的自动寻路NavMessAgent系统(三)_自定义_03

Unity的自动寻路NavMessAgent系统(三)_javascript_04

 

二.设置移动物体的Navmesh层

1.在所有移动物体身上添加Navmeshagent组件

2.设置AreaMask为自己对应的层级

三.编写控制脚本

参考之前博客

运行结果如开头

四.功能深入,阻断

1.搭建场景两块行驶区域中间一个cube链接

2.设置对应的NavMesh层,行驶区域设置正常的walkable层,连接cube设置bridge层(自定义名字)

3.编写控制脚本

4.运行查看结果 如开头

Unity的自动寻路NavMessAgent系统(三)_自定义_05

Unity的自动寻路NavMessAgent系统(三)_javascript_06

public GameObject target;
private NavMeshAgent agent;
public GameObject bridge;
void Start()
{
agent = gameObject.GetComponent<NavMeshAgent>();
}
void Update()
{
agent.SetDestination(target.transform.position);

if (Input.GetKeyDown(KeyCode.Q))
{
bridge.gameObject.SetActive(!bridge.activeSelf);
agent.areaMask *= -1;
}
}

注意:agent.areamask = 1的时候,说明只有第一层启用,=-1的时候是关闭所有层,具体层数设置zidi自定义