Python Pygame - направление анимации спрайтов - PullRequest
0 голосов
/ 24 ноября 2018

, поэтому я пытаюсь анимировать персонажа на листе спрайтов с 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()
...