如何计算弹丸撞击移动目标的协调位置?

时间:2016-04-27 07:50:52

标签: algorithm game-physics

我正在这个游戏中创建一个网格游戏(如国际象棋,x / y坐标),有一些射弹必须击中移动目标。

移动目标遵循由X / Y坐标的X步骤组成的路径(使用A *寻路获取)。弹丸不遵循路径,它们直接从发送者到目标。

我想计算射弹击中目标的坐标(根据他的路径)

我尝试使用:2d game : fire at a moving target by predicting intersection of projectile and unit但是如果目标在弹丸飞行过程中转弯,则此算法不起作用。

你能帮我解决这个算法吗?

作为输入我有:

  • 目标路径的每个步骤的坐标
  • 目标速度&弹
  • 实际x / y目标位置(如果需要,可以是x:7.61,y:5.22)
  • 射弹发射器的位置

您可以考虑:

  • 在射弹飞行期间,目标永远不会改变他的路径
  • 如果目标没有移动,则速度等于0
  • 如果需要,可以推迟射弹开始

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

你快到了。

使用对象到达那里的时间(应该是长度/速度)注释对象路径中的每个步骤。

接下来,获取路径的每个片段,并假设目标仅沿着该片段移动,并使用您找到的答案来确定其相交的位置。有3个选项。

  1. 你在该段内的某个地方击中目标。这是您正在寻找的解决方案。
  2. 您将在细分结束后点击目标。这意味着你离得太远,所以当它在这个特定的段上旅行时你无法击中目标。您需要尝试路径的下一部分。
  3. 您将在细分的初始点之前点击目标。这意味着该段相对较近,您应该能够随时点击目标。您可以决定这是一个解决方案,并为您的镜头添加一些延迟,以便目标位于细分中,或者尝试上一个细分。
  4. 鉴于上述情况,我将从目标路径的第一段开始。如果你无法击中那里的目标,请尝试使用下一个目标,直到找到可以击中目标的目标。这将是目标在范围内的第一个位置,因此拍摄应该没有延迟。

答案 1 :(得分:1)

算法1:调整发布时间

  1. 如果目标直接从发送者直线移动,计算射弹所需的时间。

  2. 计算经过该时间后目标的位置。

  3. 计算射弹到达该点所需的距离和时间。

  4. 适当延迟发布。

  5. 下行:如果目标直接向发送方移动并且初始距离很大,则此算法可能会造成长时间的延迟。

    如果延迟太大,您可能需要重新计算,并使用较早的执行时间。

    算法2:调整抛射速度

    1. 使用您链接的算法查找点击时间。

    2. 计算当时目标的位置。

    3. 设定射弹速度,使其与目标同时到达打击点。射弹速度应在发射时确定为恒定。

    4. 下行:如果目标立即转向或远离发送者,则射弹的速度可能与正常速度明显不同。

      我更喜欢算法2。我认为玩家会欣赏弹丸立即开始跋涉。如果您使用算法1,游戏可能看起来没有响应。我不认为偶尔的慢速/快速射弹会对玩家造成太大影响。

相关问题