unity3d自带寻路学习笔记

2015年03月17日 14:20 0 点赞 0 评论 更新于 2017-04-27 15:49

1. 创建场景物体

首先,在 Unity3D 中创建以下物体:

  • 创建一个 Cube,将其大小设置为(10,0.5,10),并将其重命名为 “plane”,此平面将作为寻路的基础场景。
  • 在 “plane” 上创建 3 个 Cube,将它们重命名为 “obstacle”,这些将作为寻路过程中的障碍物。
  • 创建一个 Sphere 和一个 Cube,分别重命名为 “player” 和 “target”,“player” 是寻路的主体,“target” 是寻路的目标。

此时,Hierarchy 面板的显示状态可参考对应图示。

2. 配置 Navigation 面板

通过选择 “Window > Navigation” 打开 Navigation 面板。

  • 选中 3 个 “obstacle”,按照特定设置进行配置(此处可参考对应图示)。
  • 选中 “plane”,同样按照特定设置进行配置(此处可参考对应图示)。

3. 编写 C# 脚本

创建一个新的 C# 脚本,脚本代码如下:

public class NavTest : MonoBehaviour
{
// 定义目标物体的 Transform
public Transform target;
// 定义 NavMeshAgent 组件
private NavMeshAgent navMeshAgent;

void Start ()
{
// 获取 NavMeshAgent 组件
navMeshAgent = GetComponent<NavMeshAgent> ();
}

void Update ()
{
// 设置 NavMeshAgent 的目标位置
navMeshAgent.destination = target.position;
}
}

上述代码中,NavTest 类继承自 MonoBehaviour,在 Start 方法中获取 NavMeshAgent 组件,在 Update 方法中不断更新 NavMeshAgent 的目标位置为 target 的位置。

4. 为物体添加组件和挂载脚本

  • 为 “player” 添加 “component > Navigation > Nav Mesh Agent” 组件。
  • 将刚才编写的 NavTest 脚本挂载到 “player” 上。
  • 设置 NavMesh Walkable 层为 Default,并将 “target” 物体拖拽到 NavTest 脚本中的 Target 字段上(此处可参考对应图示)。

5. 调整物体位置

调整障碍物和目标物体的位置,使场景布局看起来更加合理和舒适(此处可参考对应图示)。

6. 烘焙导航网格

打开 Navigation 面板下的 Bake 子面板,设置一些参数(参数的详细解释可参考 Unity 官方手册)。设置完成后,点击 “Bake” 按钮,然后按下 Ctrl + P 运行游戏,简单的寻路功能就实现了。

作者信息

menghao

menghao

共发布了 332 篇文章