Pygame检查与最顶层前景rect的碰撞

时间:2012-06-29 16:03:05

标签: mouse sprite pygame rect

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

我希望能够在一个矩形上按住鼠标并将其移动到屏幕上,这样可以很好地完成。但问题是它们都有相同的控件点击并拖动来移动它们。因此,如果我点击其中一个sprite rects并将其拖到另一个sprite rects上,它也会选中它。我不希望这种情况发生。

有没有办法只检查与最顶层前景rect的碰撞,或者有人可以解释这样做的方法,以达到类似的结果。我看过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()

1 个答案:

答案 0 :(得分:0)

使用event queue并检查pygame.MOUSEBUTTONDOWN事件,而不是使用pygame.mouse.get_pressed()函数。只有在第一次按下按钮时才会被触发。