← Все вопросы

В каком порядке рисовать объекты в pygame, чтобы фон не перекрывал героя?

Задан 11 месяцев назад1.2к просмотров1 ответ
5

Загрузил картинку фона и спрайт героя, оба blit-ю на экран. Но в игре виден только фон — герой куда-то пропал. Если убрать фон, герой появляется. Что я делаю не так с порядком?

1 ответ

10
✓ Принятый ответ — помог автору

В pygame работает принцип «маляра»: что нарисовал позже — то поверх. Раз фон рисуется после героя, он его закрашивает. Нужно сначала фон, потом героя, потом текст/счёт — снизу вверх по слоям.

screen.blit(background, (0, 0))     # 1) сначала фон
screen.blit(hero, (x, y))           # 2) потом герой поверх фона
screen.blit(score_text, (10, 10))   # 3) сверху интерфейс
pygame.display.flip()               # показать кадр

Запомни порядок: фон → игровые объекты → интерфейс (счёт, кнопки). И не забывай, что весь блок отрисовки — внутри игрового цикла, перед display.flip(). Кстати, если рисуешь фон через blit, отдельный screen.fill(...) уже не нужен — фон сам перекрывает прошлый кадр.

Ваш ответ

Войдите, чтобы ответить на вопрос.