2016-06-28 1 views
0

Я действительно новым для Libgdx и игры-программирования ... Это мое хоббиLibGdx Многоуровневая изометрической

Я скачал несколько изображений для очень простой городской игре. Его очень просто построить карту «одного слоя» (Drawing Isometric game worlds),

Здесь он находится: an "eaxmple" for using a collection of images! Но, как вы можете видеть на изображении, есть фон (синий) ... и тогда есть такие высотные здания (красные). Так что это все многоуровневое, и оно подходит к идеальному togehter ... Так что мой вопрос: что такое лучший способ построить что-то вроде этого или это какие-то шаблоны для рендеринга? Как я могу отображать плитки на разных высотах? Например, мост (например, в TheoTown)?

an image example

+0

Думаю, я нашел тихое хорошее решение для этого http://codereview.stackexchange.com/questions/92095/isometric-city-building-game ... но что с разной высотой? – DranikMan

ответ

0

Попробуйте сортировать здания по Z-индекс. В этом случае это означает, что здания, расположенные ближе к нижней части экрана (независимо от их высоты), должны быть вычерчены последними.

Вот пример того, что я хотел бы сделать:

public class Building implements Comparable<Building> { 
    //render, constructor, etc. 
    public int compareTo(Building b) { 
     return b.y - y; 
     //sort buildings based on their distance from the bottom of the world 
    } 
} 

В коде рендеринга, первый сортировать список зданий, а затем рисовать:

Collections.sort(listOfBuildings); 
for (Building b : listOfBuildings) { 
    b.render(); 
} 

Я надеюсь, что это помогает! Btw, я не могу проверить это прямо сейчас, так что возможно, что рисунок будет полностью назад, где здания наверху рисуются перед зданиями внизу. Если это так, поиграйте с методом compareTo.

+0

это работает довольно хорошо: 'для (INT г = mapLayerCount-1; г> = 0; z--) { \t \t \t для (INT х = 0, х = 0; y -) {// RENDER '..... а затем просто продолжаем рендеринг следующим образом: .......' screenX = (cellX * tile_width/2) + (cellY * tile_width/2) screenY = (cellY * tile_height/2) - (cellX * tile_height/2) ' – DranikMan

+0

Спасибо за вашу помощь !!! Но после некоторого времени я решил использовать координату az ... как выше -> – DranikMan

+0

Но я не знаю, как я могу построить мост ... или просто блок «на один уровень» выше, потому что z cordinate сортирует только рисунок «заказ» ... но мне нужно что-то вроде небоскреба .., (картинка) – DranikMan