我有一个相当简单的鸟瞰 2D 游戏,其中塔 Sprite 通过向它们发射子弹来抵御来袭的移动 Sprite 。我的问题:如何计算子弹到达其移动目标所需的子弹速度,前提是子弹始终具有相同的定义速度?
我正在使用 JavaScript 并拥有这些 sprite 变量(以及其他变量): sprite.x、sprite.y、sprite.width、sprite.height、sprite.speedX(即速度)、sprite.speedY...所以我有对象 originSprite、targetSprite 和 bulletSprite,它们都具有这些类型的值,我需要设置正确的 bulletSprite 速度值。
可能为了看起来不错,子弹会从 originSprite 的外部开始(或某个定义的半径,虽然我猜从 originSprite 中心开始也可以),但它的子弹中心会尝试击中 originSprite 的中心targetSprite 左右。请注意,这个世界上没有重力或任何东西。 (也许我应该让我的 Sprite 变量使用 Angular 和速度,但现在我正在使用 speedX 和 speedY...)
非常感谢!
最佳答案
将目标 Sprite 视为二维房间中的一条直线,其中:
A(time) = (sprite.positionX + sprite.speedX * time, sprite.positionX + sprite.speedX * time)
因为你的子弹有恒定的速度,你也知道:
bullet.speedX^2 + bullet.speedY^2 = bullet.definedSpeed^2
然后你也可以为子弹计算一条直线:
B(time) = (bullet.positionX + bullet.speedX * time, bullet.positionX + bullet.speedX * time)
你知道两条线在某处相交:
A(time) = B(time)
然后由您用给定的值求解这些方程式并寻找 time
的最小值。
关于javascript - 二维游戏算法来计算子弹击中目标所需的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3211374/