编辑:只需阅读您的屏幕实际上是 590 像素高,这会改变数学但不会改变公式
计算忽略碰撞的球会击中的位置。如果 (0,0) 是竞技场的左上角,则取 y = mx + b,其中 b 是您的 y 偏移量(球在 y = 240 处击球),m 是您的坡度 (1.45)
现在我们想知道当 x770-30
更远时 y 将等于多少,所以做数学:
y = (1.45)(740) + (240) = 1313
这显然超出了您的范围。它会反映
y/height = floor(1313/590) = 2 times
意思是斜坡仍在向上移动,它会撞到
y mod height = 1313 mod 590 or 133
如果它反映了奇数次,(floor(y/2) %2 == 1)
那么您将不得不使用以下方法来计算它
MAX_HEIGHT - (y mod height) = 590 - (1903 mod 590) = 590 - 133 = 457
您可以通过将多个 590 高度字段堆叠在一起来可视化这一点,其中一个是您开始的地方:
--------------------------------------------------------------------
|
|
|
| ball ends up here (*)
| *
| *
| *
------------------------(reflection two)------------*---------------
| *
| *
| *
| *
| *
| *
| *
---------------------*---------(reflection 1)------------------------------
| *
| *
| *
| *
|*ball hit here
|
|
-----------------------------------------------------------------------
同样的想法也适用于向下发展。计算位置,计算反射次数,使用 mod 或 590 - mod 来确定它应该在哪里。