1

私はブレイクアウト クローンに取り組んでおり、衝突する 2 つの四角形の交差四角形を取得する方法を見つけようとしていたので、x 軸と y 軸の両方でボールがブロックに入った深さを測定し、速度を逆転させます。

次のように、各ケースの深さを計算できると考えました。

ブロックとのボールの衝突

しかし、交差点の四角形があれば、ボールが左/右または上/下からブロックに当たるかどうかを心配する必要はありません (x 軸と y 軸をそれぞれ逆にするだけなので)。タイピングの。

私はPygame のドキュメントを見てきましたが、そのための機能がないようです。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

6

四角形r1とがありr2.left, .right, .top, and .bottomエッジがあると仮定すると、

left = max(r1.left, r2.left);
right = min(r1.right, r2.right);
top = max(r1.top, r2.top);
bottom = min(r1.bottom, r2.bottom);

(通常、座標は上から下、左から右に増加します)。最後に、 と をチェックしleft<righttop<bottom面積を計算します。

Area = (right - left) * (top - bottom);

または、関数を使用することもできますclip()。質問でリンクしたドキュメントから:

clip(Rect) -> Rect 引数 Rect 内に完全に収まるようにトリミングされた新しい四角形を返します。最初から 2 つの四角形が重なっていない場合は、サイズが 0 の Rect が返されます。

于 2013-12-10T02:58:16.973 に答える