0

1 つまたは 2 つの問題に関する質問があります。Pygame を使用して描画ゲームを作成しています。

ボール同士や壁に対して、表面の内部で跳ね返るボールがあります。マウスを使用すると、ボールが跳ね返る直線を描くこともできます。

ボールの Surface と Rect をカバーする ball.png があるため、ボールは pygame.image を使用して描画されます。しかし、線については単純な長方形を返す pygame.draw.line() を使用しています。

そして、私の現在の最大の問題:

各線を独自の Surface オブジェクトに描画し、これらをより大きな「ゲーム キャンバス」にブリットすることにしました。これは、ここで提供されているピクセルの完全な衝突検出と surfarray.array_colorkey() を使用したかったためです。そのためには、基礎となる Surface が必要です (ボールには pygame.image によって返される画像 Surface があります)。衝突アルゴリズムの透明度の側面を使用できるように、線に Surface が必要です。そうしないと、ボールが線を包む Rects から跳ね返ります。

Q1) 線を引く良い方法はありませんか? 画像やスプライトに似たものを使用したいと思います。そのようなことはありますか?

Q2) いいえの場合、「ゲーム キャンバス」の座標を使用して小さい面に線を描画するのが比較的簡単で、線が途切れず、上記のピクセル パーフェクト コリジョンが機能するように、線ごとに面を作成するにはどうすればよいですか? ?

Q3) 私が完全にオフになっている場合/衝突、検出、描画などを行うためのより良い方法がある場合.

4

1 に答える 1

1

円上の線のピクセルごとの衝突はやり過ぎです。

円と線の 2D 衝突に関する情報: 移動円と固定線分の 2D 衝突

そして、衝突 euclidがあります: http://partiallydisassemblyd.net/eucid/point2.html#SECTION002530000000000000000Circle.intersect( Line2 )

numpyより良い解決策があるかもしれません。

于 2012-05-31T23:13:33.480 に答える