2

colliderect がスプライトでどのように機能するかを理解するのに苦労しています。私はそれについて良い考えを持っていますが、ゲームに実装しようとすると、「attributeError:'pygame.surface' object has no attribute '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 スプライトを作成した瞬間にクラッシュし、修正方法がわかりません。

前もって感謝します。

4

1 に答える 1

0

クラスを Bullet と呼び、そのクラスを bullet と呼びました。colliderect を呼び出しているときは、Bullet の代わりに Bullet をチェックするか、Bullet クラスのオブジェクトに名前を付けます

于 2013-03-01T00:11:09.227 に答える