Как сделать анимацию pygame
import pygame
pygame.init()
win = pygame.display.set_mode((800, 450))
pygame.display.set_caption("GAMER")
bg = pygame.image.load('bg.jpg')
playerStand = [pygame.image.load('playerStand_1.png'), pygame.image.load('playerStand_2.png'),
pygame.image.load('playerStand_3.png')]
clock = pygame.time.Clock()
walkLeft = [pygame.image.load('playerStand_1.png')]
walkRight = [pygame.image.load('playerStand_1.png')]
x = 50
y = 305.5
weight = 64
height = 110
speed = 20
isJump = False
jumpCount = 10
left = False
right = False
animCount = 0
def drawWindow():
global animCount
win.blit(bg, (0, 0))
if animCount + 1 >= 30:
animCount = 0
a = 30
if left:
win.blit(walkLeft[animCount // a], (x, y))
animCount += 1
elif right:
win.blit(walkRight[animCount // a], (x, y))
animCount += 1
else:
win.blit(playerStand[animCount // a], (x, y))
animCount += 1
pygame.display.update()
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and x > 20:
x -= speed
left = True
right = False
elif keys[pygame.K_RIGHT] and x < 800 - weight - 20:
x += speed
else:
left = False
right = False
animCount = 0
if not (isJump):
if keys[pygame.K_SPACE]:
isJump = True
else:
if jumpCount >= -10:
if jumpCount < 0:
y += (jumpCount ** 2) / 2
jumpCount -= 1
else:
y -= (jumpCount ** 2) / 2
jumpCount -= 1
else:
isJump = False
jumpCount = 10
drawWindow()
pygame.quit()
playerStand там я хотела сделать анимацию того как стоит перс, но включается только первая картинка. Если можно то объясните, позязя (シ_ _)シ
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
Вы обнуляете animCountвсякий раз, когда не нажата клавиша "влево" или "вправо". Поэтому у вас и включается только 1я анимация