編集:画面の高さが実際には590ピクセルであることを読んでください。これは数学を変更しますが、式は変更しません
衝突を無視して、ボールがどこに当たるかを計算します。(0,0) がアリーナの左上の場合、y = mx + b を使用します。ここで、b は y オフセット (ボールは y = 240 で打たれた) で、m は勾配 (1.45) です。
ここで、x がさらに桁を進めたときに y がどのようになるかを知りたい770-30
ので、次の計算を行います。
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 を使用して、位置を決定します。