Я пытаюсь написать игру под названием «Скроллинг-шутер» с помощью Pygame.Я пытаюсь нарисовать спрайты друг над другом в правильном порядке.В функции инициализации каждого класса спрайта я назначаю атрибут, называемый «слой».Согласно документации Pygame, это должно изменить слой спрайта в спрайте в функции allSprites = pygame.sprite.LayeredUpdates (), и спрайты с более высоким значением layer должны быть нарисованы поверх спрайтов с более низким значением.Несмотря на параметр, если я использую get_layer_of_sprite в функции рисования, он просто дает 0. Кто-то в подредите r / pygame сказал, что атрибут должен быть _layer вместо layer, но это тоже не сработало.
Функция allSprites.draw (display) входит в мою функцию draw ().Функция draw () вызывается на каждой итерации основного цикла.
Соответствующий код можно найти здесь: https://github.com/CiriOfRivia/Pygame-Scrolling-Shooters/blob/master/hi
Полный код можно найти здесь: https://github.com/CiriOfRivia/Pygame-Scrolling-Shooters/blob/master/Layering%20issue
Pygame docs: «Если добавляемый вами спрайт имеет слой атрибута, то этот слой будет использоваться. Если ** kwarg содержит« layer », то переданные спрайты будут добавлены в этот слой (переопределяя sprite.layerattribute). Если ни спрайт не имеет атрибутного слоя, ни ** kwarg, то для добавления спрайтов используется слой по умолчанию. "
Заранее спасибо за помощь.Я, вероятно, сделал одну маленькую ошибку, которая все испортила, что очень часто случается, когда я кодирую.
Если я добавляю слой к спрайтам после их инициализации, кажется, что он работает нормально.Однако я хочу иметь возможность установить слой в функции инициализации.
Ожидаемый результат: слой плоскости выше, чем слой острова, поэтому плоскость следует рисовать над островом.Выходные данные должны быть: Plane 3 Island 1
Фактический результат: слой плоскости равен слою острова.Порядок рисования является случайным, и остров рисуется поверх плоскости. Выходные данные: Плоскость 0 Остров 0