У меня возникли проблемы с пониманием того, как коллайдер работает со спрайтами. У меня есть хорошая идея об этом, но всякий раз, когда я пытаюсь реализовать его в мою игру, я просто получаю сообщение об ошибке «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, он падает, и я не знаю, как его исправить.
Заранее спасибо.
Что такое «пуля» и где она инициализирована? Я прошу, потому что у вас есть строка в классе Bullet, которая говорит «self.image = bullet», заставив меня думать, что пуля является объектом Surface, но в классе ufo1 вы предполагаете, что «bullet» имеет атрибут rect. Если в этот момент пуля является поверхностью, то это, вероятно, ваша проблема. –
oh right probaly должен был включить, что в вопросе плохо просто отредактируйте вопрос – user2116429
Во-первых, я попытался бы исправить отступ в классе ufo1. – clime