У меня есть хитрая проблема, я не уверен, как лучше всего решить: у меня есть анимированная плитка двери. Когда он закрыт, он должен быть отсортирован в одну сторону, но когда он открыт, его нужно будет отсортировать по-другому, так как он принадлежит другому (соседнему тайлу).
Вот дверь закрыта:
и дверь открылась:
Я полагаю, что было бы возможно переопределить систему сортировки для таких плиток и настроить сортировку, основываясь на кадре, но это выглядит немного странно.
Кто-нибудь сталкивался с подобным сценарием? Какие-нибудь элегантные решения?
Ответы:
Может быть, вы могли бы сделать дверь из двух объектов на разных плитках и показывать только один из них одновременно. Таким образом, открытая дверь может также блокировать движение, что кажется реалистичным.
источник
Создать три спрайта ...
Когда дверь закрыта, нарисуйте спрайт 1 и рассматривайте его как «блокиратор», чтобы игроки не могли пройти через него.
Когда дверь открыта, замените этот спрайт на # 2 (только столбик двери). Затем поместите спрайт № 3 (только дверь) в соседнюю камеру, в которой будет находиться дверь.
Закрытие - это просто удаление двери и замена стойки на столб + дверь в закрытом положении.
С этой настройкой вам не нужно беспокоиться о рендеринге открытой двери в каком-либо особом порядке. Просто визуализируйте его в том же порядке, что и любой другой объект в квадрате, в котором он находится.
Недостатком является то, что у вас не может быть игрока или любого другого объекта на площади, куда пойдет открытая дверь.
источник
Есть два трюка, которые я использую для сортировки в 2D:
Добавьте позицию земли к спрайтам, это точка, в которой спрайт касается земли (например, женские ноги, ствол дерева, дверная рама) и сортирует ее вместо пикселей спрайтов. Таким образом, спрайт не будет зависеть от анимации
Добавьте несортируемые дочерние объекты к объектам (например, у мужчин может быть несколько дочерних элементов, которые не влияют на сортировку - плащ, лук, меч и т. Д., Дверная коробка имеет дочернюю дверь). Таким образом, анимация дочерних спрайтов также не влияет на сортировку.
источник
Лучший способ решить сортировку объектов - это вообще не сортировать. Если вы используете буфер глубины, вы можете визуализировать все за один проход. Объекты с более высоким z-значением будут дальше, чем объекты с более низким z-значением.
Даже если ваша игра 2D, вы все равно должны рассмотреть возможность использования трехмерных координат с буфером глубины, иначе вы навсегда запутаетесь в алгоритме художника .
источник