Skip to main content

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,不可用。方法本身应该仍然有效。