Сортировка по Y в 2D Godot

Проблема

Многие 2D-игры используют перспективу «3/4 вид», создавая впечатление, что камера смотрит на мир под углом. Для достижения этого эффекта объекты, находящиеся «дальше», должны быть отрисованы за объектами, находящимися «ближе». На практике это означает, что нам нужно провести «сортировку по y» — установить порядок рисования на основе y-координаты объекта. Чем выше на экране, тем дальше и, следовательно, ниже порядок отрисовки.

Вот пример проблемы:

Эти объекты отрисовываются в стандартном порядке отрисовки: порядке дерева. Они расположены в сценовом дереве следующим образом:

Решение

Godot имеет встроенную опцию изменения порядка отрисовки: для любого узла CanvasItem (Node2D или Control) мы можем включить свойство Y Sort Enabled. Когда это включено, все дочерние узлы сортируются по y-координате.

В приведенном выше примере мы можем включить это свойство для узла TileMap. Тем не менее, все еще есть проблема:

Порядок отрисовки основан на y-координате каждого объекта. По умолчанию это координата центра объекта:

Поскольку мы хотим создать впечатление, что объекты находятся на «земле», мы можем решить эту проблему, сдвинув спрайт каждого объекта так, чтобы позиция объекта выравнивалась с нижней частью спрайта:

Теперь выглядит намного лучше:

Скачайте этот проект

Скачайте код проекта здесь: https://github.com/godotrecipes/using_ysort

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

1 + четырнадцать =

Прокрутить вверх