0

我通读了论坛,我确信以前有人问过这个问题,但我真的找不到我要找的东西。

我的问题如下:

我有一个沿着样条线移动的 AI 角色。如果该路径被阻挡,角色应该围绕它沿弧线移动,然后继续沿着它的路径前进。

为了论证,我们假设样条线的长度为 7000 个单位。

因此,我有两个 3D (x,y,z) 向量。第一个向量是 AI-bot 的当前位置,第二个向量是经过障碍物的位置。暂时让我们说:当前样条位置 + 400 个单位;稍后我可以做一条线追踪来获得障碍物的尺寸等,但现在我不在乎它。

现在我想计算一条替代路径以避免上述障碍 - 因此计算这两点之间的弧 - 我该怎么做?我的数学真的很糟糕,但看了弹丸轨迹,因为我认为它会是一样的,只是无法真正理解它:<

4

3 回答 3

0

它不一定是弧线。你可以用一种非常简单的方式递归地解决这个问题。

假设您在位置 A,障碍物在位置 B。您可以执行以下操作:

  • 从当前位置到A+V(B[x]+height(B),0,0)
  • 从当前位置到A+V(0,B[y]+width(B),0)
  • 从当前位置到A+V(B[x]-height(B),0,0)

其中 V 是一个向量,其分量为 V(x,y,z),width(B) 是障碍物的宽度,B[x] 是 B 位置的 x 分量。这样你就可以沿着矩形围绕它移动. 您现在可以通过将该矩形分成两半来平滑路径。3个细分足以使这个足够平滑。要细分,取第一条路径的中间点,并在第二条路径的中间画一条线。从第二条路径到第三条路径的操作相同,现在您的矩形变成了八边形。如果这还不够流畅,请再执行几个步骤。这将创建一个您可以使用的新样条线。

于 2017-03-17T08:55:31.097 回答
0

我会看看样条曲线和 EQS 系统的组合。样条曲线定义了要遵循的理想路径。EQS 系统会在路径附近或路径上找到位置,同时仍会进行避障。EQS 可以返回所有有效的目的地,因此您可以按自定义标准手动订购它们。

设置在样条线上的 Actor 确实可以工作,但是当让它们停止跟随样条、在正确的点创建新的、将 Actor 附加到新的样条等时,会出现一大堆混乱。

于 2017-03-26T04:33:56.637 回答
0

在完全采用添加样条点等的混乱方式后,我昨天得出了这个结论。我看到的唯一问题是我发现 EQS 系统很难理解。不遵循这些示例,而是以我需要的方式对其进行修改。让我们看看,我会随时通知你。

于 2017-03-27T12:20:52.483 回答