Я сделал анимацию ходьбы в Pygame. У меня он начинается лицом вперед, а затем, если вы двигаетесь, анимация переключается влево или вправо, в зависимости от того, как вы двигаетесь. Но когда я переключаюсь назад, чтобы не двигаться, анимация не меняется обратно.
def animate(self):
now = pg.time.get_ticks()
if self.vel.x != 0:
self.walking = True
else:
self.walking = False
# Show walk animation
if self.walking:
if now - self.last_update > 200:
self.last_update = now
self.current_frame = (self.current_frame + 1) % len(self.walk_frames_l)
bottom = self.rect.bottom
if self.vel.x > 0:
self.image = self.walk_frames_r[self.current_frame]
else:
self.image = self.walk_frames_l[self.current_frame]
self.rect = self.image.get_rect()
self.rect.bottom = bottom
# Show idle animation
if not self.jumping and not self.walking:
if now - self.last_update > 350:
self.last_update = now
self.current_frame = (self.current_frame + 1) % len(self.standing_frames)
bottom = self.rect.bottom
self.image = self.standing_frames[self.current_frame]
self.rect = self.image.get_rect()
self.rect.bottom = bottom
Я выяснил причину, по которой это не останавливается, связано с логикой движения c в другой части моя программа и self.vel.x никогда не будут равны 0, просто очень близко к ней. Я исправил это, выполнив
if (self.vel.x // 1) != 0:
Это делает так, что если значение vel равно 0.001, то оно будет просто 0. Это работает, если я двигаюсь вправо, но если я двигаюсь влево, он не переключается назад , Кто-нибудь знает почему? Спасибо.