unity3d自带寻路学习笔记
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 运行游戏,简单的寻路功能就实现了。