0

私はブレイクアウトゲームに取り組んでおり、パドルに当たった場所に応じて、パドルからのボールの跳ね返りを計算することに少しこだわりました。次のようball.vx = (ball.x - paddle.x) / 10にバウンスしますが、パドルの両側で均等ではありません。たとえば、ボールがパドルの左端に当たった場合、ball.vx は -3.2 になり、右端に当たった場合は 1.6 になります。

私がしたことは: ball.vy = 4 ball.vx = (ball.x - paddle.x) / 10

ball.x = ball.x + ball.vx
ball.y = ball.y + ball.vy
4

2 に答える 2

0

そのことを念頭に置いて、ボールパドルの両方の左側ball.xpaddle.x参照してください。

仮定して :

  • ball.rはボールの半径です
  • paddle.wパドルの幅です

あなたはそのようなことを試す必要があります:

ball.vx = (ball.x - ball.r/2 - paddle.x - padde.w/2) / 10

アップデート :

ball.vx = ((ball.x + ball.width/2) - (paddle.x + padde.w/2)) / 10

(ball.x - ball.r/2とはボールパドルpaddle.x - padde.w/2の両方の中間を表します)

于 2013-07-06T21:09:02.200 に答える
0

パドルの中心やボールの角などではなく、各オブジェクトの同じ基準から計算が実行されていることを確認してください。

(また、角度が変わっても速度を同じ [または非常に近い] に保つ式を使用することを検討してください。)

于 2013-07-06T20:40:58.590 に答える