2016-01-07 2 views
1

Мне было интересно, может ли кто-нибудь дать мне простой пример того, как всегда рисовать спрайты в pygame на - верхнем слое - пока анимация разгоняется на экране?Pygame спрайты всегда сверху?

Сенарио, который я пытаюсь решить, имеет анимированный спрайт (например, человек, идущий на месте) и различные другие объекты, проходящие мимо него, в то время как он все еще оживлен.

Мое решение до сих пор имеет анимационное наслаивание поверх «проходящих объектов», которое не то, что я хочу.

Заранее спасибо.

ответ

2

Я думаю, что вы частично ответили на свой вопрос здесь.

Это вопрос организации того, что нарисовано первым. В некоторых 2D-играх с прокруткой используется «слойное» решение, в котором есть фоновый слой, средний слой и передний план, а система рисования отображает один слой за другим.

Я также видел игры в стиле «сверху вниз» в стиле Pokémon, просто сортируя спрайты по их вертикальной позиции, поэтому спрайты «ближе» к камере рисуются последними и, таким образом, поверх других спрайтов.

Посмотрите, как the current implementation of Scene2D in libGDX дает каждому Актеру свойство z-index, которое впоследствии может быть использовано для организации Актеров в слоях.

0

Просто рисовать спрайты с LayeredUpdates группы:

класса pygame.sprite.LayeredUpdates
LayeredUpdates является спрайт группа, которая обрабатывает слои и рисует как OrderedUpdates.
LayeredUpdates(*spites, **kwargs) -> LayeredUpdates

Вы можете установить слой по умолчанию через kwargs, используя 'default_layer' и целое число для слоя. Уровень по умолчанию равен 0.

Если спринт, который вы добавляете, имеет слой атрибута, тогда этот слой будет использоваться. Если ** kwarg содержит «слой», тогда переданные спрайты будут добавлены к этому слою (переопределяя атрибут sprite.layer). Если ни один спрайт не имеет слоя атрибута, а ** kwarg, то для добавления спрайтов используется слой по умолчанию.

и дать вашим спрайтам правильное значение layer.

Смежные вопросы