Как вставить картинку (спрайт) в игру на pygame?
Надоело, что герой — просто цветной квадрат. Хочу поставить вместо него картинку (png с персонажем). Как загрузить картинку в pygame и нарисовать её в нужном месте?
2 ответа
Картинку загружают через pygame.image.load, а рисуют через blit. Загружать надо один раз до цикла, рисовать — каждый кадр.
player_img = pygame.image.load("hero.png").convert_alpha() # один раз
# внутри цикла при отрисовке:
screen.blit(player_img, (x, y)) # рисуем в точку (x, y)
blit буквально значит «налепить картинку на экран». (x, y) — это левый-верхний угол картинки. .convert_alpha() нужен, чтобы прозрачный фон png остался прозрачным, а не закрасился чёрным.
Если картинка слишком большая — поменяй размер один раз после загрузки:
player_img = pygame.transform.scale(player_img, (50, 50))
Частая ошибка новичков — FileNotFoundError/couldn't open hero.png. pygame ищет картинку относительно того, откуда запущен скрипт, а не где лежит .py. Положи png рядом со скриптом и запускай из этой папки, либо собери надёжный путь через os.path.join(os.path.dirname(__file__), "hero.png").