2013-02-28 2 views
1

У меня возникли проблемы с пониманием того, как коллайдер работает со спрайтами. У меня есть хорошая идея об этом, но всякий раз, когда я пытаюсь реализовать его в мою игру, я просто получаю сообщение об ошибке «AttributeError:„pygame.surface“объект не имеет атрибута" Прямоугольник»как работает collide.rect в pygame

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

Что такое «пуля» и где она инициализирована? Я прошу, потому что у вас есть строка в классе Bullet, которая говорит «self.image = bullet», заставив меня думать, что пуля является объектом Surface, но в классе ufo1 вы предполагаете, что «bullet» имеет атрибут rect. Если в этот момент пуля является поверхностью, то это, вероятно, ваша проблема. –

+0

oh right probaly должен был включить, что в вопросе плохо просто отредактируйте вопрос – user2116429

+0

Во-первых, я попытался бы исправить отступ в классе ufo1. – clime

ответ

0

Вы назвали свой класс Bullet и вашу поверхность для этой классовой пули. Когда вы вызываете коллайдер, у вас есть контрольная пуля вместо Bullet или что вы назвали объектом класса Bullet

Смежные вопросы