ポン ゲームでボールがパドルから跳ね返ることを拒否する
場合によっては、プレーヤーがポン ゲームで異常に遭遇することがあります。パドルで跳ね返るのではなく、パドルに沿ってスライドします。この異常な動作は、衝突検出メカニズムの微妙な欠陥に起因します。
衝突検出の欠陥
ボールがパドルの四角形に衝突すると、その方向が変わります。ただし、衝突がパドルの前面ではなく、上部または下部で発生する場合があります。衝突が検出され、ボールの軌道が適切に反転される間、ボールはすでにパドルに深く侵入しています。
次のフレームでは、ボールは衝突エリアから出ることができません。その結果、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 サイトの他の関連記事を参照してください。