典型的なポン ゲームでは、ボールはパドルで正しく跳ね返るはずです。ただし、特定の状況下では、プレーヤーはボールがパドルの端に沿ってぐらつき、適切にバウンドしないという奇妙な動作に遭遇することがあります。
ボールがパドルに衝突したとき従来の方法では、次のように方向が反転します。
if ball.colliderect(paddleLeft): move_x *=-1 if ball.colliderect(paddleRight): move_x *=-1
ただし、ボールがパドルの上部または下部に衝突すると、ボールがパドルにわずかに侵入する可能性があります。次のフレームでも衝突が検出され、別の方向変更が発生します。この結果、パドルのエッジに沿ってジグザグの動きが発生します。
この問題を解決するには、2 つの実行可能なアプローチがあります。
1.パドルの側面に基づいて方向を設定
衝突するたびに方向を反転するのではなく、ボールがパドルのどちら側に当たるかに基づいて方向を調整します。
if ball.colliderect(paddleLeft): move_x = abs(move_x) if ball.colliderect(paddleRight): move_x = -abs(move_x)
このアプローチにより、予想通り、ボールはパドルの前で跳ね返りました。
2.衝突後のボールの位置を調整
または、衝突後にボールの位置を変更してボールを正しく配置します:
if ball.colliderect(paddleLeft): move_x *= -1 ball.left = paddleLeft.right if ball.colliderect(paddleRight): move_x *= -1 ball.right = paddleRight.left
この方法では、ボールはパドルのすぐ外側に自動的に配置されます。ジグザグ動作を防止します。
以上がポンボールがパドルに沿ってぐらつくのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。