在unity编辑器中,有一个灰常好用的插件:Navigation。有了它1,你就可以实现人物自动走到你鼠标点击的位置,而且还会自动避开障碍物,下面就教大家如何进行创建与使用。(文章中unity版本:Unity2021.3.20f1c1)
虽然unity编辑器里有自带,也够用,但是要知道有这个专业的插件,了解更加深入,可不安装直接跳过。


com.unity.ai.navigation



在烘焙导航系统之前先简单的创建一个场景(这里我直接使用的之前文章里创建的场景)








障碍物必不可少,下面在导航系统中创建一下障碍物
我们把这个电视柜当作障碍物来创建,也可以直接创建一个立方体,

选中障碍物,
在Navigation窗口中,点击Object,
勾选Navigation Static,
Navigation Area属性选择Not Walkable不可行区域

然后再选中Bake选项,
点击下方Bake再次烘焙一下

然后障碍物的不可行区域就被切割出来了







susing System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class PlayerNav : MonoBehaviour
{
private NavMeshAgent agent;
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
{
agent.destination = hit.point;
}
}
}
}


在前面障碍物制作步骤,针对静态的障碍物,例如墙体、树木等,像垃圾桶和座椅属于可移动的动态障碍物,用上面的做法也可以,缺点就是移动一下障碍物就需要Bake烘焙一下,麻烦,不如一劳永逸。
下面就是动态障碍物的制作方法:
(其实很简单,只需要添加一个组件即可)




