javascript - 二维游戏算法来计算子弹击中目标所需的速度?

标签 javascript math graphics geometry 2d

我有一个相当简单的鸟瞰 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/

相关文章:

javascript - 如何在将它引用到类时动态创建一个 div?

ruby-on-rails - Ruby BigDecimal 健全性检查( float newb)

r - 设置设备默认图形参数

java - 从图形对象获取 X 和 Y 坐标

javascript - 如何在 Javascript 命名空间脚本中创建函数数组

javascript - 这个函数中回调是如何执行的呢?

javascript - 在不调用函数的情况下,这段 JavaScript 代码如何工作?

c++ - 为什么在 C++ 中 (0 < 5 < 2) 结果为真?

c++ - 编写 LookAt 函数

javascript - 绘制多边形