我正在这个游戏中创建一个网格游戏(如国际象棋,x / y坐标),有一些射弹必须击中移动目标。
移动目标遵循由X / Y坐标的X步骤组成的路径(使用A *寻路获取)。弹丸不遵循路径,它们直接从发送者到目标。
我想计算射弹击中目标的坐标(根据他的路径)
我尝试使用:2d game : fire at a moving target by predicting intersection of projectile and unit但是如果目标在弹丸飞行过程中转弯,则此算法不起作用。
你能帮我解决这个算法吗?
作为输入我有:
您可以考虑:
感谢您的帮助!
答案 0 :(得分:2)
你快到了。
使用对象到达那里的时间(应该是长度/速度)注释对象路径中的每个步骤。
接下来,获取路径的每个片段,并假设目标仅沿着该片段移动,并使用您找到的答案来确定其相交的位置。有3个选项。
鉴于上述情况,我将从目标路径的第一段开始。如果你无法击中那里的目标,请尝试使用下一个目标,直到找到可以击中目标的目标。这将是目标在范围内的第一个位置,因此拍摄应该没有延迟。
答案 1 :(得分:1)
算法1:调整发布时间
如果目标直接从发送者直线移动,计算射弹所需的时间。
计算经过该时间后目标的位置。
计算射弹到达该点所需的距离和时间。
适当延迟发布。
下行:如果目标直接向发送方移动并且初始距离很大,则此算法可能会造成长时间的延迟。
如果延迟太大,您可能需要重新计算,并使用较早的执行时间。
算法2:调整抛射速度
使用您链接的算法查找点击时间。
计算当时目标的位置。
设定射弹速度,使其与目标同时到达打击点。射弹速度应在发射时确定为恒定。
下行:如果目标立即转向或远离发送者,则射弹的速度可能与正常速度明显不同。
我更喜欢算法2。我认为玩家会欣赏弹丸立即开始跋涉。如果您使用算法1,游戏可能看起来没有响应。我不认为偶尔的慢速/快速射弹会对玩家造成太大影响。