0

異なる画像や開始位置などで書いたメインスプライトのオブジェクトである10個のスプライトがあります。しかし、それらはすべて同じように動作します。それらはメインスプライトのサブスプライトです。

自分の長方形をマウスでクリックしたまま、画面上で動かせるようにしたいのですが、これは問題なく機能します。しかし、問題は、それらすべてが同じコントロールをクリックしてドラッグして移動できることです。したがって、スプライトrectの1つをクリックして、それを別のスプライト上にドラッグすると、それもピックアップされます。そして、私はそれが起こらないようにしたいのです。

一番上の前景のrectとの衝突のみをチェックする方法はありますか、または誰かが同様の結果を達成するこれを行う方法を説明できるかどうか。私は正しいドキュメントを見ましたが、解決策を見つけることができません。

def update(self,):
    self.move(self.rect)

def move(self,rect):

    if pygame.mouse.get_pressed() == (1, 0, 0) and the_rect.collidepoint(pygame.mouse.get_pos()):
        self.state = 1

    elif pygame.mouse.get_pressed() == (0, 0, 0) and the_rect.collidepoint(pygame.mouse.get_pos()):
        self.state = 0

    if self.state == 0:
        the_rect.centerx = the_rect.centerx
        the_rect.centery =  the_rect.centery
    elif self.state == 1:
        (the_rect.centerx, the_rect.centery) = pygame.mouse.get_pos()
4

1 に答える 1

0

pygame.mouse.get_pressed() 関数を使用する代わりに、イベント キューを使用して pygame.MOUSEBUTTONDOWN イベントをチェックします。ボタンが最初に押されたときに一度だけ起動されます。

于 2012-07-03T11:56:02.717 に答える