Unreal导航系统
Unreal导航系统基于导航网格(简称Nav Mesh)。它将可导航空间划分为多个区域——在这种情况下是多边形——为了效率,这些多边形被进一步细分为三角形。然后,为了到达某个地方,每个三角形被视为图中的一个节点,如果两个三角形相邻,那么它们各自的节点就会被连接起来。在这个图上,你可以执行路径查找算法,比如带有欧几里得距离启发式的A*,或者更复杂的东西(例如A*的变体或考虑不同成本的系统)。这将在这些三角形之间生成一条AI角色可以行走的路径。
然而,除非你需要更改导航系统的底层结构,否则你不需要在这个细节级别上工作/操作。能够理解所有三角形都以某种方式形成一个图,路径规划算法可以在其中运行,就足以掌握这个工具本身了。
要能够使用导航系统,让我们了解设置导航系统的主要过程。在这个阶段,我们不再担心系统的底层结构,而是关心如何使用它的所有功能。系统会处理剩下的部分。同样,我们需要向导航系统提供地图信息(例如,指定特殊区域)。通常,这是你们团队中的AI程序员负责的,但如果你的团队很小,关卡设计师可能会负责这个任务。虽然没有特定的过程,但是迭代程序,让我们探索你可以用来在Unreal中定义Nav Mesh的不同步骤——或者工具,如果你更喜欢的话。我们将在本章中详细检查它们:
导航网格生成:这是第一步。在你能够使用以下工具之前,重要的是开始生成Nav Mesh。这一步包括定义如何生成多边形、三角形、Nav Mesh的精度,甚至哪种类型的代理人将穿越这个特定的Nav Mesh。
导航网格修改器:并不是所有的Nav Mesh部分都是平等的,这是一个工具,用于指定Nav Mesh的哪些部分应该有不同的行为。事实上,正如我们之前看到的,可能有一个区域充满毒气,代理人希望避开这部分,除非他们真的必须穿越它。Nav Mesh Modifier允许你指定包含气体的区域是特殊的。然而,该区域内的行为类型(例如,这条路径不应该被穿越,或者只应该被具有游泳能力的代理人穿越)是在Nav Area中指定的。
导航区域:这允许你指定一种特定类型的区域应该如何表现,是否应该被避开等。在进行Nav Filtering以确定代理人可以穿越哪些区域时,这些是关键。
导航链接:这些可以连接导航网格的两个不同部分。假设你有一个平台边缘。默认情况下,AI代理会找到另一种方式。如果你心里有第三人称地图模板,那么需要从平台上下来代理将绕过该区域使用楼梯,而不是直接掉下去或跳下平台。导航链接允许你将导航网格中位于平台上方的部分与其下方的部分连接起来。因此,代理将能够从平台上掉下来。然而,请注意,导航链接可以连接导航网格的两个通用部分,从而允许路径查找通过跳跃、传送等方式找到出路。
导航过滤:我们并不总是在每种情况下都以相同的方式寻找路径。导航过滤允许我们定义特定规则,以在该特定实例(即调用路径查找以寻找路径的特定时间)执行路径查找。
让我们详细讨论这些要点。
最后更新于