Unity A* 从列表中寻路

Unity A* Pathfiding from a list

我正在开发一款 Dungeon Crawler 风格的游戏,并将一堆位置对象设置为玩家行走的 "grid" 并将它们存储在父对象中,例如列表。所以我想对敌人的运动使用相同的列表,但是在看了数周的许多 A* 寻路教程之后,我没有设法解决它,因为我没有使用常规的 2D 网格。这是 reference.

我看了你的图片,你确实有一个网格。仅仅因为您放置了对象并不意味着您可以从列表中为它们计算 "grid"。

我建议您创建一个在您的关卡开始时调用的函数。它遍历该对象的子对象并生成一个数据结构,允许您使用 A* 计算路径。您可以使用每个对象的 transform.position 来确定它是相对的 placement/adjacency.

有多种方法可以做到这一点。一个建议是在网格的不同区域创建一个带有触发器的隐形对撞机(可以在空游戏对象上)。给敌人一个默认速度并给敌人附加一个碰撞器和 select 触发器的复选框,这样当敌人移动到触发器上时,您可以调用 OnTriggerEnter(从附加到敌人的脚本或不可见的碰撞器 GameObject)并使其改变运动。你想如何实现人工智能取决于你。

根据评论编辑

将不可见的游戏对象放置在您的场景中,就像您想象的那样,它们在鸟瞰图中处于阵列中。在脚本中将它们分配给一个数组。根据您的人工智能算法,让敌人在阵列中的点之间穿行。 https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html