2009-04-30 15 views
0


私は、基本的に「ブレークアウト」のパイゲームを作っています。
私は衝突を使用しており、1つの長方形の異なる辺の異なるバウンス効果を持つ簡単な方法が必要です。
私がボールとバットの衝突のために持っているものは次の通りです:
"dot" = ball; "バット" =バット;皆さんはすべて理解しています。Pygame - 別の側面の衝突の質問!

if dot.rect.colliderect(bat.rect):<br> 
dot.dy *= -1 

私はそれぞれの側と相互作用何かをしたいと思いますので、それはバットの側面に当たったときのボールのself.dx値を逆転できる、それが当たったときにのみself.dy値を反転させます上。

ありがとうございました! :

答えて

0

ドットのY座標がバットのY座標と同じであるかどうかをチェックする2番目のチェック(if内)が必要です(つまり、ボールが同じ高さにあるときにボールがバットに当たったバットとして、それは横から当たっていなければならないことを意味する)、次にXの速度を逆転させる。さもなければ、あなたはトップのバットに当たったので、Yの速度を逆転させます。

これは間違いありませんが、それはあなたを得るでしょう。

0

感謝!それはまったく時間がかからなかった。 dot.rect.colliderect場合

(bat.rect):誰のために、ここで私はガイドラインとして使用されるコードです 570もし< dot.rect.centery < 610と(bat.rect.centerx - 75)< dot.rect.centerx <(bat.rect.centerx + 75): dot.dx * = -1他 : dot.dy * = -1

素晴らしい作品

。唯一の問題点:Pythonの衝突では、衝突に反応する前に、オブジェクトが少しでも他のオブジェクトに移動します。したがって、正確な測定にifステートメントの制限を設定することはできません。これは、それらのEXACT測定でトップに当たった場合、最初のifステートメントをオフにして、ひっくり返すためです。しかし、これはシンプルですごく効果的です。

ありがとうございましたMcWafflestix! :D

関連する問題