Pygame не меняет мой спрайт в соответствии с атрибутами моего персонажа - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь заставить своего персонажа менять изображения, когда он достигает определенного расстояния от другого персонажа. По сути, если персонаж находится на расстоянии 50 или более единиц, он устанавливается в режим ходьбы, но если он находится на расстоянии менее 50 единиц, он устанавливается в режим атаки, у которого есть соответствующие изображения / наборы мощности.

Я пробовал циклы while и добавление других условий

if sif.x - cap.x > 50 and sif.collideCount == 0:
    sif.moveLeft() #cap is the other character
elif cap.x - sif.x > 50 and sif.collideCount == 0:
    sif.moveRight()
elif cap.x - sif.x <= 50 and sif.collideCount == 0:
    sif.punch = True
    sif.right = True
    sif.punchRight()
    if sif.rect.colliderect(cap.rect):
        sif.collideCount = 1
        sif.collided = True
if sif.collided:
    sif.moveLeft()
    if sif.x < 30:
        sif.moveRight()
        sif.collideCount = 0
        sif.collided = False

функция удара

def punchRight(self):
    self.img = pygame.image.load('sifpunch.png')
    self.punch = True
    self.right = True
    self.left = False
    self.x += self.vel
    self.rect.x = self.x
    screen.blit(self.img, (self.x,self.y))

функция рисования, которая содержит обновленное изображение:

def draw(self, screen):
        elif self.punch and self.right:
            self.img = pygame.image.load('sifpunch.png')
            screen.blit(self.img, (self.x,self.y))

Pygame никогда не заканчивает тем, что устанавливает sif.punch равным True, поэтому Sif продолжает идти влево и вправо вместо перехода в режим атаки.

1 Ответ

0 голосов
/ 30 апреля 2019

Я понял это - я изменил границу с 50 на 200. Диапазон в 50 единиц был слишком мал для показа клипа во времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...