Wie geht ein 2D-Spiel wie Zelda mit dem Charakter um, der sich hinter Gebäuden befindet, in denen nur ein Teil von ihm gezeigt wird?

28

Ich versuche ein einfaches Spiel im Zelda-Stil zu entwickeln. Ich fand dieses Thema sehr nützlich

Wie hat LoZ: A Link to the Past mit Kollisionen unter einer Kachel umgegangen?

Das verwende ich als Referenz, um meinen Kollisionserkennungsmechanismus zu entwickeln. Es gibt jedoch etwas, das ich nicht verstanden habe. Wenn sich Link hinter Gebäuden befindet, wird nur ein Teil von ihm angezeigt. Kann mir jemand bitte helfen, zu verstehen, wie dieser Effekt erzielt werden kann? Ist das Gebäude nicht Teil des Hintergrunds?

Tinadm
quelle
Ich stelle mir den Renderstil gerne als eine Grundschicht (Gras, Fliesenboden usw.), eine Objektschicht (Töpfe, Feinde, Shurbs, Link usw.) und eine Himmelsschicht (Dächer, angehobene Töpfe, Baumkronen) vor , etc). Die Logik zum Verschieben von Dingen zwischen Ebenen kann am Beispiel von Töpfen etwas seltsam sein, aber das ist eine andere Sache.
Benjamin Danger Johnson

Antworten:

32

2D-Tiled-Spiele haben normalerweise mehr Ebenen, die in verschiedenen Ebenen gerendert werden - einige werden im Hintergrund gerendert, andere über dem Spieler.

Dieser Teil des Daches wird über dem Spieler gerendert und deshalb kann der Spieler hinter dieses Gebäude gehen.

Hier ist das Bildbeispiel aus meinem Spiel, um es besser zu erklären: Bildbeschreibung hier eingeben

Blodyavenger
quelle
Das Gebäude selbst kann also Teil des Hintergrunds sein, aber das Dach ist Teil einer anderen Ebene, die mit den Sprites über der Ebene gezeichnet wird.
Tinadm
2
@Tinadm es muss nicht unbedingt das gesamte Dach sein, es könnte auch nur der Dachabschnitt sein, der auf den Player gezeichnet wird, der nach allem anderen gerendert wird.
Tetrad
7
+1 für großartige Grafiken. Hilft den visuellen Lernenden wirklich.
UnderscoreZero
1
Ich bin mir ziemlich sicher, dass alte SNES-JRPGs dieselbe Technik verwendeten. FF2, FF5 usw. Die Technik ist weiterhin gültig.
Hatoru Hansou
1
Sie können dies ziemlich gut mit Emulatoren, z. B. ZSNES, sehen, mit denen Sie einzelne Ebenen manuell ein- und ausschalten können.
Tobias Kienzler
5

Während die Antwort von Blodyavenger beschreibt, wie es am wahrscheinlichsten gemacht wird, gibt es hier eine andere Möglichkeit, die ein einfaches Umschalten der Perspektive ermöglicht (z. B. vier oder acht verschiedene Richtungen oder einige Höhenstufen der Kamera):

Betrachten Sie die Ansicht Ihrer Karte von oben nach unten, z

  ABCDEFGHIJKL
1 +-----=----+
2 |  .    .  |
3 |    X   o |
4 | .        ||
5 |    .   . |
6 +--=-------+

Wo zum Beispiel Xeine hohe Säule markiert. Für jedes Objekt speichern Sie Bilder aller möglichen Perspektiven (oder verwenden dieselben ...), die beliebig viele Kacheln hoch sein können. Beginnen Sie beim Zeichnen einfach mit der Spalte oder Zeile, die sich in der aktuellen Perspektive auf der Rückseite befindet, z. B. Zeile 1, wenn Sie von Süden schauen. Zeichnen Sie danach die zweithäufigste Zeile / Spalte nach hinten und so weiter. Auf diese Weise wird etwas, das höher ist als eine Kachel (gedehnt auf die aktuelle Perspektive), einfach überzeichnet, was dahinter liegt.

(Entschuldigung für den Mangel an schönen Bildern, ich bin nicht so gut in angewandten Grafiken ...)

Tobias Kienzler
quelle
Beachten Sie, wie Sie die Kamerahöhe auf diese Weise leicht ändern können, indem Sie die Objekttexturen strecken
Tobias Kienzler,
1

Sie sollten eine Variable für die Tiefe haben und die Bilder mit der größten Tiefe zuerst zeichnen lassen, dann die anderen mit der geringsten Tiefe. Und die Tiefe jedes Objekts sollte dem Negativ seiner y-Koordinate entsprechen.

Depth=-y

Ahmed Elyamani
quelle