AI 导航
AI 导航允许您创建能智能地在游戏世界中移动的非玩家角色(NPC),使用从场景几何体自动创建的导航网格。动态障碍物允许您在运行时改变角色的导航,而离网链接让您构建特定动作,如开门、跳过间隙或从 ledge 跳下。
tip
AI 导航是 Unity 的内置功能。阅读 Unity 官方文档了解如何使用它的重要概念。
与 Unity 2019 导航功能的区别
与之前版本相比,Unity 2022 改变了 AI 导航在 Unity 中的工作方式:
- 该系统现在是由 Unity 维护的独立包,而非集成到核心中。
- 运行时生成!您现在可以在 VRChat 客户端的运行时创建和更新导航网格。以前只能在 Unity 编辑器中实现。
- NavMesh Links 和 Off-Mesh Links 更易于使用。
- NavMesh 生成总体上得到了改进,更加稳健。
- 障碍物现在可以是动态的。
- 您可以在世界中使用多个 NavMesh Surfaces。
- NavMesh Surfaces、Modifiers 和 Modifier Volumes 提供对系统更精细的控制。
- 区域成本现在正确导出到世界数据中,并在加入世界时恢复。
VRChat 中的限制
AI 导航的某些功能无法在 VRChat 客户端中使用或目前无法使用:
自定义代理类型
Unity 允许您声明不同类型的代理,它们可以有不同的半径、高度、步高、最大坡度等值。此信息打包到世界数据中,但 VRChat 目前没有检索和应用自定义代理类型的方法。此功能正在考虑中,但目前您需要使用默认代理类型。
各种方法和属性
NavMeshLink.agentTypeID- 运行时烘焙对自定义代理无效,因此不太有用。NavMeshSurface.CollectObjects- Udon 中不支持枚举数组。NavMeshSurface.agentTypeID- 运行时烘焙不适用于自定义代理,因此没用。NavMeshSurface.UpdateNavMesh()- 返回 AsyncOperation,不可用。方法本身应该仍然有效。