Wie gehen Sie beim Rendern einer Kachelkarte mit unebenen Kacheln um?

13

Bildbeschreibung hier eingeben

Folgendes möchte ich mit meiner Kachelkarte tun, bei der ich mir nicht sicher bin. Wie Sie sehen können, sind die oberen Wände viel größer als die unteren und die seitlichen (dies ist auch ein Problem mit meinen Ecken, die seltsame Formen haben [eher ein L als ein Quadrat] sowie größer als die 40x40px, die meine aktuellen Fliesen sind ).

Bildbeschreibung hier eingeben

Ich habe auch das Kachelblatt angehängt, das ich für die Kacheln verwende, um Ihnen zu zeigen, wie die Ecken und Oberseiten im Vergleich zu den übrigen Kacheln aussehen.

Was ich denke ist, dass ich in der Lage sein könnte, sie einfach mit dem gleichen Array zu zeichnen, das ich habe, wenn ich die Kacheln Breite und Höhe anstelle eines Satzes BxH verwende? Ich weiß nicht, wie gut das funktionieren wird, aber wenn die Blöcke, die unterschiedliche Werte haben, Blöcke sind, auf die der Spieler / die NPCs nicht treten können, ist dies möglicherweise kein Problem. Ich bin mir auch nicht sicher, ob dies durchführbar ist Lösung.

Mein Code für den Fall, dass Sie sehen möchten, wie ich es gerade bearbeite : Map.java (Pastebin)

tl; dr - wie kann ich meine 2d aussehende Kachelkarte nehmen und sie ändern, um Kacheln unterschiedlicher Größe zu erhalten? Oder gibt es eine bessere Möglichkeit, das zu tun, was ich versuche? Gibt es einen Namen für eine Methode, nach der ich beim Googeln suchen sollte?

Latenz
quelle

Antworten:

19

Hierfür gibt es zwei Standardmethoden.

  • Teilen Sie Ihre nicht standardmäßigen Fliesengrößen in standardmäßige Fliesengrößen auf. So werden diese Wandstreifen zu einem "Stapel" quadratischer Kacheln, die Sie einfach in Ihrem Level-Editor zusammenfügen können. Spiele wie die frühen Final Fantasy-Spiele haben auf diese Weise funktioniert.
  • Lassen Sie jedes Fliesenteil höher als Ihre Standardfliesenhöhe sein. Richten Sie die Kacheln am unteren Rand Ihres Kachelrechtecks ​​aus, sodass zusätzliche Kacheln höher als die übliche Kachelhöhe gezeichnet werden können. Beim Zeichnen Ihrer Karte zeichnen Sie Kacheln, die von hinten beginnen (die Kachelquadrate oben auf dem Bildschirm) und mit den unteren Kacheln enden (die Kacheln am unteren Bildschirmrand). Dadurch wird sichergestellt, dass hohe Kacheln im Vordergrund ordnungsgemäß über Kacheln im Hintergrund gelegt werden. Beachten Sie, dass bei diesem Ansatz Ihre Kacheln immer noch auf eine einzelne Kachel in der Breite beschränkt sind.

Sie können einen oder beide dieser Ansätze ausführen. Sogar Spiele, bei denen die Methode "Aufteilen in Stapel von Kacheln" angewendet wird, ermöglichen es häufig einigen Objekten (Bäumen usw.), die Grenzwerte für die Kachelhöhe zu überschreiten und nur eine Reihenfolge der Kartenzeichnungen von oben nach unten zu erzwingen, um sicherzustellen, dass alle Ebenen vorhanden sind korrekt.

Trevor Powell
quelle
2
+1 für den zweiten Ansatz. Im Grunde bewegt Sie das von einer Kachelkarte zu Objekten auf der Karte.
Kromster sagt Unterstützung Monica
Perfekt, vielen Dank, ich dachte, es könnte etwas Ähnliches wie die zweite Option sein, aber ich wollte sicherstellen, dass ich es auf standardisierte Weise mache. = D
Latenz
2

Schneiden Sie und würfeln Sie Ihre ungeraden Größenfliesen, um die Standardmaße zu passen. Der springende Punkt bei einer Kachelkarte ist, dass Sie viel Geschwindigkeit und Nutzen erzielen, wenn Sie alle Größen gleich einstellen.

Patrick Hughes
quelle