0


基本的に「ブレイクアウト」のPygameを作っています。
私は衝突を使用しており、1 つの長方形のさまざまな側面にさまざまなバウンス効果を持たせる簡単な方法が必要です。
私が現在ボールとバットの衝突のために持っているのはこれです:
"ドット" = ボール; 「コウモリ」=コウモリ; だから皆さん分かります。

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

それぞれの面と相互作用するものが欲しいので、ボールがバットの側面に当たったときにボールの self.dx 値を反転させ、トップに当たったときにのみ self.dy 値を反転させることができます。

ありがとう!!!:D

4

2 に答える 2

0

ありがとう!時間はかかりませんでした。他の人のために、ガイドラインとして使用したコードは次のとおりです。

dot.rect.colliderect(bat.rect) の場合: 570 < dot.rect.centery < 610 および (bat.rect.centerx - 75) < dot.rect.centerx < (bat.rect.centerx + 75) の場合: ドット.dx *= -1 その他: dot.dy *= -1

よく働く。1 つだけ問題があります。Python の衝突では、衝突に反応する前に、オブジェクトが他のオブジェクトに少し入り込んでしまいます。そのため、if ステートメントの制限を正確な測定値に設定することはできません。これらの正確な測定値で上限に達した場合、最初の if ステートメントが開始され、非常に失敗するからです。しかし、これはシンプルであるためにうまく機能します。

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

于 2009-05-01T16:54:17.740 に答える
0

必要なのは、ドットの Y 座標がバットの Y 座標と同じかどうかをチェックする 2 番目のチェック (if 内) です (つまり、ボールがバットと同じ高さにあったときにボールがバットに当たった、つまり、横からヒットしたに違いありません)、X 速度を逆にします。それ以外の場合は、バットを上に打ったので、Y 速度を逆にします。

正確ではありませんが、それでうまくいきます。

于 2009-05-01T00:04:56.573 に答える