2016-06-28 11 views
0

Ich bin wirklich neu zu Libgdx und Spiel-Programmierung ... Das ist mein HobbyLibgdx Mehrstufige isometrische

ich ein paar Bilder für eine sehr einfache Stadt Spiel heruntergeladen haben. Es ist sehr einfach eine "Einschicht" Karte zu erstellen (Drawing Isometric game worlds),

Hier kommt es: an "eaxmple" for using a collection of images! Aber wie man auf dem Bild sehen kann, gibt es einen Hintergrund (blau) ... und dann gibt es diese Hochhäuser (rot) .So ist alles mehrstufig und es passt perfekt zusammen ... Also meine Frage ist: Was ist das? Der beste Weg, um so etwas zu bauen, oder sind es irgendwelche Muster zum Rendern? Wie kann ich Fliesen in verschiedenen Höhenstufen anzeigen? Zum Beispiel eine Brücke (z. B. in TheoTown) ??

an image example

+0

Ich denke, ich fand eine ruhige gute Lösung für diese http://codereview.stackexchange.com/questions/92095/isometric-city-building-game ... aber was ist mit verschiedenen Höhen? – DranikMan

Antwort

0

Versuchen Gebäude durch einen z-Sortier-Index. In diesem Fall müssten Gebäude, die näher am unteren Bildschirmrand liegen (unabhängig von ihrer Höhe), zuletzt gezeichnet werden.

Hier ist ein Beispiel dafür, was ich tun würde:

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 
    } 
} 

In Ihrem Rendering-Code, zunächst die Liste der Gebäude sortieren, dann ziehen:

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

Ich hoffe, das hilft! Btw, ich kann das jetzt nicht testen, also ist es möglich, dass die Zeichnung komplett rückwärts ist, wo die Gebäude oben vor den Gebäuden darunter stehen. Wenn das der Fall ist, spielen Sie mit der compareTo-Methode.

+0

das funktioniert ziemlich gut: 'for (int z = mapLayerCount-1; z> = 0; z--) { \t \t \t für (int x = 0; x = 0; y -) {// RENDER '..... und dann einfach weitermachen mit dem folgenden Rendering: .......' screenX = (cellX * tile_width/2) + (cellY * tile_width/2) screenY = (zelleY * tile_height/2) - (zelleX * tile_height/2) ' – DranikMan

+0

Danke für deine Hilfe !!! Aber nach einer Weile suche ich eine Az-Koordinate ... wie oben -> – DranikMan

+0

Aber ich weiß nicht, wie kann ich eine Brücke bauen ... oder nur einen Block "eine Ebene" höher, weil die z-Koordinaten Sortiert nur die Zeichnung "Bestellung" ... aber ich brauche etwas wie ein Wolkenkratzer .., (Bild) – DranikMan