当我们创建游戏时,经常需要让角色、NPC 等人工智能能够自主导航到指定的目标点。而要实现这个功能,Unity 提供了 NavMesh 系统。NavMesh 是一种三角形网格,它被用于让游戏对象自动寻路,这些游戏对象可以是玩家、敌人或者其他的可控制对象。
在本篇博客中,我们将会介绍如何使用 Unity 的 NavMesh 自动寻路,并提供一个使用示例代码。
首先,我们需要创建 NavMesh。打开菜单栏中的 Window
> AI
> Navigation
,这将打开 Navigation 窗口。在 Navigation 窗口中,我们需要为场景中的地形、建筑等物体建立一个 NavMesh。
在Navigation
窗口中,点击 Bake
按钮来生成 NavMesh,此时 Unity 会扫描场景并建立可行走区域的三角形网格。而我们所要做的,只需要在需要自动寻路的游戏对象上添加一个 NavMesh 代理组件即可。
在这个示例中,我们创建了一个名为 AutoPathfinding 的 C# 脚本。在该脚本中,我们定义了一个公共变量 target
,代表我们要前往的目标位置。然后,在 Start()
方法中,我们获取了 NavMesh 代理组件。在 Update()
方法中,我们检查目标变量是否存在,并把代理设置为朝向目标移动。因为 NavMesh 是内置的,所以不需要任何其他配置。
下面是示例代码:
using UnityEngine;
using UnityEngine.AI;
public class AutoPathfinding : MonoBehaviour
{
public Transform target; //目标位置,即要去往的地方
private NavMeshAgent agent; //NavMesh代理
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
if (target != null) //如果目标存在
{
agent.SetDestination(target.position); //设置代理要去的位置
}
}
}
最后,我们需要将该脚本添加到需要自动寻路的游戏对象上,并在 Inspector 工具栏中指定目标变量即可。
总结
通过这篇博客,我们已经学习了如何使用 Unity 的 NavMesh 自动寻路来实现游戏对象的自主导航。记得在使用前先创建 NavMesh 并将 NavMesh 代理组件添加到游戏对象中,然后只需几行代码就能够让游戏对象自动寻路到指定位置。希望这篇博客能对您的开发有所帮助!