I have read other questions posted here that are related but I can not seem to fit those answers into my state machine which can be found here: https://github.com/Aeryes/Demented
I am trying to create an animation either using a sprite sheet or just an iteration through a list or dict. I have so far managed to get the first image in a list to load as an animation but it will not cycle through the list of 4 images as long as my flag variable which is running = True is true. Instead it will load the first image from the list and hold it on that image until running = False in which case it reverts as intended back to the standstill image.
Here is my current code for my player class without my failed animation attempts:
import pygame as pg
from settings import Music_Mixer, loadCustomFont, States, screen
from time import sleep
"""This section contains entity states which are separate from game and menu states."""
class Player():
def __init__(self, x, y):
self.health = 100
self.speed = 1
self.screen = screen
self.imagex = x
self.imagey = y
self.running_right = False
self.running_left = False
self.rect = pg.draw.rect(self.screen, (255, 0, 0), [self.imagex, self.imagey, 20, 45])
self.image = pg.image.load('Images/Animations/PlayerRun/Stickman_stand_still.png').convert_alpha()
self.images = ['Images/Animations/PlayerRun/Stickman_stand_still.png', 'Images/Animations/PlayerRun/Stickman_run_1.png', 'Images/Animations/PlayerRun/Stickman_run_2.png',
'Images/Animations/PlayerRun/Stickman_run_3.png', 'Images/Animations/PlayerRun/Stickman_run_4.png']
#Moves the player and begins the animation phase.
def move_player(self, speed):
self.pressed = pg.key.get_pressed()
#Move left and start left run animation.
if self.pressed[pg.K_a]:
self.imagex -= 5
#Move right and start right run animation
if self.pressed[pg.K_d]:
self.running_right = True
self.imagex += 5
elif not self.pressed[pg.K_d]:
self.running_right = False
#Move up and start jump animation.
if self.pressed[pg.K_w]:
self.imagey -= 5
#Move down and start either crouch.
if self.pressed[pg.K_s]:
self.imagey += 5
#Animates the running movement of the player.
def runAnim(self):
if self.running_right:
pass
elif self.running_right == False:
self.image = pg.image.load('Images/Animations/PlayerRun/Stickman_stand_still.png').convert_alpha()
#draws the player to the screen.
def draw_entity(self):
screen.blit(self.image, (self.imagex, self.imagey))
I have looked here: Animation in with a list of images in Pygame
And here: Animated sprite from few images