java – 如何计算移动对象的未来位置?

我正在创造一个小游戏,我有一个光子鱼雷正在从一艘船向目标射击.现在,当鱼雷的速度很慢时,如果它们正在移动并且我想解决这个问题,它将永远不会击中任何目标.我已经绘制了多个理论并绘制了大量数学内容,以找出实现这一目标的最佳方法,最后我推导出以下内容:

>列表项目
>我找到了光子鱼雷到达目标所需的时间.
>我发现目标在鱼雷到达所需的时间内走了多远.
>然后我找到目标的新位置和原始船之间的距离.
>这使我有机会使用余弦规则(SSS)找出子弹需要被射击的轨迹,以便有更高的击球机会.

这是一个数据库:

现在唯一的问题是我需要将a线旋转到正确的方向,因为默认情况下它与线c平行,这会混淆整个方程.有人能帮忙吗?而且,如果你能想到一个更好的方法来找到新的位置建议非常欢迎:)

最佳答案 看起来游戏是2D.现在,采取所有世界坐标:

Target Position: {xt, yt}
Target Velocity: {vxt, vyt}
Ship Position:   {xs, ys}

现在,让我们说你按方向{bx,by}击中一颗子弹它是一个方向向量或单位向量.子弹有速度.因此,在时间t’,子弹和目标的空间坐标将是:

Target New Position: {xt + vxt*t', yt + vyt*t'}
Bullet New Position: {xs + bx*sb*t', ys + by*sb*t'} ( bullet starts from ship)

因为,此时子弹和目标必须只在一个位置,然后我们可以说子弹击中了目标.因此,我们可以将新的目标位置替换为等于新的子弹位置(在时间t’之后):

xt + vxt*t' = xs + bx*sb*t'
yt + vyt*t' = ys + by*sb*t'

正如我之前所说,bx和by是方向向量,因此bx ^ 2由^ 2 = 1

(xt + vxt*t' - xs)/(sb*t') = bx
(yt + vyt*t' - ys)/(sb*t') = by
bx^2 + by^2 = 1

因此,在平方并添加它们之后,您将得到:

(yt + vyt*t' - ys)^2 + (xt + vxt*t' - xs)^2 = (sb*t')^2

这是一个带有一个变量的二次方程:t’求解它然后你可以找到bx和by.

点赞