Я пытаюсь заставить своего персонажа менять изображения, когда он достигает определенного расстояния от другого персонажа. По сути, если персонаж находится на расстоянии 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 продолжает идти влево и вправо вместо перехода в режим атаки.