Slick2D - ошибка рендеринга изометрической карты

Я сделал изометрическую карту с помощью программы "Tiled" и загрузил ее в свой код. У меня есть два слоя плитки: 1. Фоновый слой (трава) 2. Слой объектов (в данном случае холодильник) Холодильник отображается неправильно. Как вы видите здесь (слева как должно быть, справа как атм)

http://i.stack.imgur.com/UBTDf.png

Firdge состоит из двух частей, верхней и нижней части, как показано здесь:

http://i.stack.imgur.com/iuS47.png

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


person Pixell    schedule 14.10.2014    source источник
comment
Я не знаком с libGDX, и вы не рассказали, как это реализовано, но по изображениям кажется очевидным, что тайлы рендерятся от задних (самых верхних) к передним (самым нижним), независимо от их слоя, поэтому сначала закрашивается верхняя часть холодильника, затем левая/правая плитки травы закрашиваются в верхней части холодильника, а затем закрашивается нижняя часть холодильника.   -  person Marco13    schedule 15.10.2014
comment
Это бы объяснило... Я проведу небольшое исследование по этому поводу.   -  person Pixell    schedule 15.10.2014


Ответы (1)


Хорошо, я понял это. Вы можете визуализировать слои карты по одному.

map.render(x, y);

Отрисовывает весь слой сразу. Затем происходит то, что @Marco13 прокомментировал под моим вопросом. Чтобы избежать этого, используйте это вместо этого.

map.render(x, y, layer);

И если у вас есть два слоя, как у меня, например, вы просто идете:

map.render(x, y, 1);
map.render(x, y, 2);

Тогда все выглядит нормально :)

person Pixell    schedule 15.10.2014