私は現在のPython 3、pygameの上のゲームに取り組んでいると、ゲームの基本的な部分の一つは弾丸目標状況でRectsの衝突です。pygameの中Rects間のカラーキー衝突、Pythonの3
これは、colliderect
機能を使用して実現するのはかなり簡単ですが、カラーキーと同じ色のピクセルを数えないようにする必要があります。
たとえば、スプライト(文字)の1つが、その底辺が水平で、左上から弾丸が来るような大きな正三角形の形の場合、colliderect
はすぐに衝突を検出しますプレーヤーのスプライトの左上のピクセルは透明です。
私は弾丸がカラーキーとは異なる色であるピクセルに達したときにのみ、衝突を検出する関数を作成する必要があります。これは、弾丸が一画素のみであれば十分に簡単です:
if player.get_at((bullet[0] - player.left, bullet[1] - player.top)) != player.get_colorkey():
私は箇条書きで画素ごとに上記の文を反復しようとしたが、もちろん、それは大規模な遅れを引き起こしました。異なる、より効率的な方法がありますか?
ありがとうございます!