0

我有 10 个精灵,它们是我用不同图像和起始位置等编写的主要精灵的对象。但它们的行为方式都相同。它们是主精灵的子精灵。

我希望能够在一个人的矩形上按住鼠标单击并在屏幕上移动它,这非常好。但问题是它们都有相同的控件单击并拖动以移动它们。因此,如果我单击其中一个精灵矩形并将其拖动到另一个精灵矩形上,它也会将其拾起。我不希望这种情况发生。

有没有办法只检查与最上面的前景矩形的碰撞,或者是否有人可以解释一种可以达到类似结果的方法。我查看了 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 回答