ホームページ > バックエンド開発 > Python チュートリアル > ポンボールがバウンドせずにパドルに沿って滑るのはなぜですか?

ポンボールがバウンドせずにパドルに沿って滑るのはなぜですか?

Barbara Streisand
リリース: 2024-11-14 15:17:02
オリジナル
190 人が閲覧しました

Why Does My Pong Ball Slide Along the Paddle Instead of Bouncing?

ポン ゲームでボールがパドルから跳ね返ることを拒否する

場合によっては、プレーヤーがポン ゲームで異常に遭遇することがあります。パドルで跳ね返るのではなく、パドルに沿ってスライドします。この異常な動作は、衝突検出メカニズムの微妙な欠陥に起因します。

衝突検出の欠陥

ボールがパドルの四角形に衝突すると、その方向が変わります。ただし、衝突がパドルの前面ではなく、上部または下部で発生する場合があります。衝突が検出され、ボールの軌道が適切に反転される間、ボールはすでにパドルに深く侵入しています。

次のフレームでは、ボールは衝突エリアから出ることができません。その結果、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート