3

私は単純なブレイクアウト ゲームを行っていますが、ボールが上の境界線に当たったときの角度を計算する方法に問題があります。ボールが 180 度の角度で上に移動すると、0 度の角度で下に跳ね返ります。しかし、ボールが 170 度の角度で上向きに動いている場合、10 度のようにミラーリングされた角度で下向きに跳ね返るはずです。これは度数で計算できます180-170 = 10が、ボールが 190 度の角度で上向きに動いているとしたら!? すると、350 度の角度で下に跳ね返っているはずですが、これを計算する方法がわかりません!?

ボールの上向きの移動角度の値を計算または反映する簡単な方法はありますか? 数学苦手なので助かります!ありがとう!

編集:私はこのようにボールを動かしています:

xPos += speed * Math.sin(Math.toRadians(direction));
yPos += speed * Math.cos(Math.toRadians(direction));
4

2 に答える 2

0

それは簡単です。ボールが水平面を跳ねるときは、垂直方向の速度の符号を変えるだけです。そして、垂直の壁にぶつかると垂直速度の符号が変わります。速度と座標が 2D ベクトル (水平成分と垂直成分のペア) として得られることを願っています。x、y はボール座標、vX、vY はボール速度です。

そして、ボールがレンガに当たったときに、当たる直前にボールを 1 ステップ後退させてから、速度成分の符号反転を行うことをお勧めします。

于 2014-02-08T11:02:57.767 に答える