古典的なポン ゲームでは、プレイヤーはパドルを制御してボールを画面上で前後にそらします。ただし、一部のユーザーは、ボールがパドルから跳ね返らず、その表面に沿ってぐらついたり滑ったりする問題に遭遇しました。
原因:
この問題が発生します。ボールがパドルの上端または下端に衝突したとき。この衝突を検出してボールの方向を反転するのは正しいことです。ただし、場合によっては、ボールがパドルに深く入り込みすぎて、次の動作中にボールが衝突エリア内に留まってしまうことがあります。その結果、2 回目の衝突が検出され、ボールの方向が再び逆転し、パドルの前面に沿ってジグザグ効果が生じます。
解決策:
ボールの速度に -1 を乗算して方向を逆転させる代わりに、ボールが右のパドルに当たったときに正の速度を割り当て、右のパドルに当たったときに負の速度を割り当てます。左のパドルに当たると、より安定したバウンスが得られます。
if ball.colliderect(paddleLeft): move_x = abs(move_x) if ball.colliderect(paddleRight): move_x = -abs(move_x)
または、ボールの位置を調整した後にボールの位置を調整します。衝突しても境界内に留まることが保証されます。右パドルがヒットすると、ボールの右端がパドルの左側に移動し、左パドルの場合はその逆になります。
if ball.colliderect(paddleLeft): move_x *= -1 ball.left = paddleLeft.right if ball.colliderect(paddleRight): move_x *= -1 ball.right = paddleRight.left
以上がポンボールがパドルで跳ね返らずにぐらつくのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。