看来您走在正确的轨道上。基本上,您想弄清楚当球到达桨的位置时球的位置。
您可以通过查找 x 和 y 速度并跟踪上壁和下壁的位置来轻松做到这一点。
要找到 x 和 y 速度,您基本上可以找到球在设定的时间间隔内沿 x 方向和 y 方向行进的距离。因此,假设您在 t = 0 时发现位置为 (100(x), 50(y))... 然后您会看到在 t = 1 时球位于 (110, 65) 这意味着球是在 x 方向上每单位时间移动 10(像素),在 y 方向上每单位时间移动 15(像素)。
因此,让我们设置我们的房间大小以供参考。让我们的房间 200(x)乘以 150(y),所以最远的桨在 200 处,最近的桨在 x 上的 0 处……房间的底部在 150 处,顶部是 0,在是的。
如果您的桨位于x = 200
,则需要(200-110)(pixels)/10(pixels per time)
到达那里。现在您知道球到达桨叶需要多长时间,您可以计算出球在 y 轴上的位置。使用桨在 处x=200
,我们发现到达桨需要 9 个多单位的时间。因此,我们只需将时间量乘以 y 方向的变化率,即可得出球在 y 方向上移动的距离。因此,通过快速计算,我们得到球在 y 轴上移动了 135(像素)。
但是,我们回头一看,我们的房间只有 150 像素高。我们开始时y=65
65+135 是 200,大于我们的限制 150。所以我们必须在那里有一个反弹。因此,我们可以y = 150
通过简单地使用 y=mx+b 形式的线性方程来找到球何时到达。我们的 m 是 y 速度,我们的 b 是起点 y。X 以时间为单位,y 以我们的距离为单位。
所以我们知道我们的 y 发生碰撞的位置,y=150
所以我们将它与 m 一起作为我们的旅行速度和我们的 b 是我们原始的 y 位置。
150=(15)(x)+65
我们可以快速求解 x 以获得 5 和 2/3 单位的时间。所以我们现在可以从我们的总时间中减去这个,直到我们击中桨(9 units)-(5 and 2/3 units) = (3 and 1/3 units of time)
。在我们的反弹之后,我们现在将有一个负的 y 速度,但假设一个简单的反弹,速度相同。所以我们可以y=mx+b
再次使用我们的方程,但现在来确定我们球的最终 y 位置。
y=(-15)(3 and 1/3)+150
y 是球的最终 y 位置,我们的速度 15 现在是负数,我们的时间是从上方反弹后的时间,b 是 150,因为我们从屏幕底部开始。通过快速解决这个问题,我们可以看到我们现在处于 y = 100。
所以我们可以看到,当我们在x = 200
,或者桨的 x 位置时,我们的 y 位置将是 100,这是我们可以用桨击球的地方。
希望这一切都是正确的,试着在睡觉前快速完成。我可以回答您对此的任何更多问题。这只是您要理解的数学和物理,您需要将其解释为您打算使用的任何语言。