, поэтому я пытаюсь анимировать персонажа на листе спрайтов с 4 различными направлениями, 3 изображения в строке и 4 строки всего изображений, которые я хочу сделать, чтобы они появлялись на экране.Когда я нажимаю клавиши со стрелками, изображение игрока движется и идет, но только лица в одном направлении (вниз).Как исправить этот код, чтобы персонаж мог смотреть во все стороны
import pygame
pygame.init()
size = WIDTH, HEIGHT = (640, 480)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Game 2")
width = 32
height = 32
vel = 5
left = False
right = False
walkCount = 0
active = False
dir = 0
frame = 0
spritesheetplayer = pygame.image.load("playerspritesheet.png").convert()
cells = []
for n in range(3):
width, height = (32, 32)
rect = pygame.Rect(n * width, dir * height, width, height)
image = pygame.Surface(rect.size).convert()
image.blit(spritesheetplayer, (0, 0), rect)
alpha = image.get_at((0, 0))
image.set_colorkey(alpha)
cells.append(image)
playerImage = cells[0]
player = playerImage.get_rect()
player.center = (320, 240)
FPS = 60
fpsclock = pygame.time.Clock()
animation_speed = 5
run = True
while run:
pygame.time.delay(100)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if active:
playerImage = cells[frame]
frame += 1
if frame >= len(cells):
frame = 0
else:
playerImage = cells[0]
if keys[pygame.K_LEFT]:
player.x -= vel
dir = 1
active = True
elif keys[pygame.K_RIGHT]:
player.x += vel
dir = 2
active = True
elif keys[pygame.K_UP]:
player.y -= vel
dir = 3
active = True
elif keys[pygame.K_DOWN]:
player.y += vel
dir = 0
active = True
else:
active = False
screen.fill((0, 0, 0))
screen.blit(playerImage, player)
pygame.display.flip()
fpsclock.tick(FPS)
pygame.quit()