Создадим анимацию игрового персонажа, заменив простой квадрат настоящим героем.
Создание персонажа и анимации
Для этого потребуются изображения, называемые спрайтами. Это небольшие картинки, последовательное отображение которых создаёт эффект анимации.
Подготовка проекта
Поместите спрайты в одну папку с файлом game.py. Для удобства создайте подпапку (например, game), куда поместите game.py и все спрайты.
Модификация кода
Удалим из кода управление движением игрока вверх и вниз. Оставим только прыжок (пробел).
Добавим три переменные:
- left: указывает, движется ли игрок влево (True) или нет (False).
- right: указывает, движется ли игрок вправо (True) или нет (False).
- animCount: отслеживает текущий спрайт анимации.
Важно: не изменяйте названия файлов спрайтов (например, 1.png, 2.png и т.д.), так как нумерация используется в анимации.
Инициализируем переменные:
left = False
right = False
animCount = 0
Загрузка изображений
Загрузим изображения:
walkRight = [pygame.image.load('R1.png'), pygame.image.load('R2.png'), pygame.image.load('R3.png'), pygame.image.load('R4.png'), pygame.image.load('R5.png'), pygame.image.load('R6.png')]
walkLeft = [pygame.image.load('L1.png'), pygame.image.load('L2.png'), pygame.image.load('L3.png'), pygame.image.load('L4.png'), pygame.image.load('L5.png'), pygame.image.load('L6.png')]
playerStand = pygame.image.load('standing.png')
bg = pygame.image.load('bg.jpg')
Установим размеры игрока (например, 60×71 пикселей):
width = 60
height = 71
Функция drawWindow
Вынесем код отрисовки в функцию drawWindow:
def drawWindow():
#Код отрисовки здесь...
В функции drawWindow:
- Используем bg.blit(0, 0) для отрисовки фона.
- Добавим глобальную переменную animCount с помощью global animCount.
Анимация персонажа
В drawWindow добавим логику анимации:
if animCount + 1 >= 30:
animCount = 0
if left:
screen.blit(walkLeft[animCount // 5], (x,y))
animCount += 1
elif right:
screen.blit(walkRight[animCount // 5], (x,y))
animCount += 1
else:
screen.blit(playerStand, (x,y))
30 фреймов в секунду, каждый спрайт отображается 5 кадров (6 спрайтов * 5 кадров = 30 кадров).
Управление анимацией и движением влево/вправо:
if keys[pygame.K_LEFT] and x > 5:
x -= vel
left = True
right = False
elif keys[pygame.K_RIGHT] and x < 500 - width - 5:
x += vel
right = True
left = False
else:
left = False
right = False
animCount = 0
Добавим вызов drawWindow в основной цикл:
drawWindow()
Окончательная настройка
Убедитесь, что фон отрисовывается до персонажа.
Мы реализовали анимацию персонажа с помощью спрайтов. Персонаж может двигаться влево и вправо, а также прыгать. Экспериментируйте с изображениями и создавайте своих персонажей.