如何在pygame中碰撞

时间:2013-02-28 22:11:32

标签: python pygame collision-detection

我在理解碰撞是如何与精灵一起工作时遇到了一些麻烦。我对它有一个好主意,但每当我尝试将它实现到我的游戏中时,我只会收到错误消息“attributeError:'pygame.surface'对象没有属性'rect'”

ufo_lvl_1 = pygame.image.load("ufo1.png") 
bullet = pygame.image.load("bullet.png")

class Bullet(pygame.sprite.Sprite):

    def __init__(self):
    # Call the parent class (Sprite) constructor
        pygame.sprite.Sprite.__init__(self) 

        self.image = bullet
        self.damage = 5
        self.rect = self.image.get_rect()

    def update(self):
        if 1 == 1:
            self.rect.x += 15
        if self.rect.x >1360:
            self.kill()

class ufo1(pygame.sprite.Sprite):

    def __init__(self):

        pygame.sprite.Sprite.__init__(self)

        self.image = ufo_lvl_1
        self.health = 10
        self.rect = self.image.get_rect()
    def update(self):
        if 1==1:
            self.rect.x  -= 10
            if self.rect.colliderect(bullet.rect):
                self.health -= bullet.damage
                if self.health >= 0:
                    self.kill()
                bullet.kill()            

基本上我所有的精灵都在工作(不包括ufo1),但是当我创建一个ufo1精灵时,它崩溃了,我不知道如何解决它。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你把你的班级Bullet和你的表面叫做那个班级的子弹。当您调用colliderect时,您正在检查项目符号而不是子弹或任何您命名类Bullet的对象