ホームページ >バックエンド開発 >Python チュートリアル >ポンボールがパドルで跳ね返らずにぐらつくのはなぜですか?

ポンボールがパドルで跳ね返らずにぐらつくのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-09 03:42:01360ブラウズ

Why Does My Pong Ball Wobble Instead of Bouncing Off the Paddle?

ポン ゲームでボールがパドルから跳ね返らない

古典的なポン ゲームでは、プレイヤーはパドルを制御してボールを画面上で前後にそらします。ただし、一部のユーザーは、ボールがパドルから跳ね返らず、その表面に沿ってぐらついたり滑ったりする問題に遭遇しました。

原因:

この問題が発生します。ボールがパドルの上端または下端に衝突したとき。この衝突を検出してボールの方向を反転するのは正しいことです。ただし、場合によっては、ボールがパドルに深く入り込みすぎて、次の動作中にボールが衝突エリア内に留まってしまうことがあります。その結果、2 回目の衝突が検出され、ボールの方向が再び逆転し、パドルの前面に沿ってジグザグ効果が生じます。

解決策:

  1. リバース速度を乗算する代わりの方向:

ボールの速度に -1 を乗算して方向を逆転させる代わりに、ボールが右のパドルに当たったときに正の速度を割り当て、右のパドルに当たったときに負の速度を割り当てます。左のパドルに当たると、より安定したバウンスが得られます。

if ball.colliderect(paddleLeft):
    move_x = abs(move_x)
if ball.colliderect(paddleRight):
    move_x = -abs(move_x)
  1. ボールの位置を調整します:

または、ボールの位置を調整した後にボールの位置を調整します。衝突しても境界内に留まることが保証されます。右パドルがヒットすると、ボールの右端がパドルの左側に移動し、左パドルの場合はその逆になります。

if ball.colliderect(paddleLeft):
    move_x *= -1
    ball.left = paddleLeft.right
if ball.colliderect(paddleRight):
    move_x *= -1
    ball.right = paddleRight.left

以上がポンボールがパドルで跳ね返らずにぐらつくのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。