Umgang mit animierten Türen in isometrischen Kacheln


10

Ich habe ein kniffliges Problem. Ich bin mir nicht sicher, wie ich es am besten angehen soll: Ich habe eine animierte Kachel einer Tür. Wenn es geschlossen ist, sollte es in eine Richtung sortiert werden, aber wenn es offen ist, muss es in eine andere Richtung sortiert werden, da es zu einer anderen (benachbarten Kachel) gehört.

Hier ist die Tür geschlossen:

Tür geschlossen

und die Tür öffnete sich:

Tür öffnete sich

Ich stelle mir vor, es wäre möglich, das Sortiersystem für solche Kacheln zu überschreiben und die Sortierung basierend auf dem Rahmen anzupassen, aber es fühlt sich ein bisschen hackig an.

Hat jemand ein ähnliches Szenario erlebt? Irgendwelche eleganten Lösungen?


2
Wie erkennt Ihr Sortiersystem derzeit die Zeichenreihenfolge von Kacheln?
Roy T.

Antworten:


4

Vielleicht könnten Sie aus zwei Objekten auf verschiedenen Kacheln eine Tür machen und jeweils nur eines davon zeigen. Auf diese Weise könnte eine geöffnete Tür möglicherweise auch die Bewegung blockieren, was irgendwie realistisch erscheint.


4

Erstelle drei Sprites ...

  1. Tür geschlossen (wie Ihr erstes Sprite) - blockiert die Bewegung
  2. Nur der Rahmen (in Ihrem Fall Pfosten) der Tür, aber keine Tür - blockiert keine Bewegung
  3. Nur die Tür in geöffneter Position - blockiert die Bewegung

Wenn die Tür geschlossen ist, zeichne Sprite 1 und behandle es als "Blocker", damit die Spieler nicht hindurchgehen können.

Wenn die Tür geöffnet wird, ersetzen Sie das Sprite durch # 2 (nur den Türpfosten). Platzieren Sie dann Sprite Nr. 3 (nur die Tür) in der angrenzenden Zelle, in der sich die Tür befinden würde.

Beim Schließen wird lediglich die Tür entfernt und der Pfosten durch Pfosten + Tür in geschlossener Position ersetzt.

Mit diesem Setup müssen Sie sich nicht darum kümmern, die geöffnete Tür in einer speziellen Reihenfolge zu rendern. Rendern Sie es einfach in der Reihenfolge wie jedes andere Objekt auf dem Quadrat, in dem es sich befindet.

Der Nachteil ist, dass Sie den Spieler oder ein anderes Objekt nicht auf dem Platz haben können, auf den die geöffnete Tür geht.


3

Es gibt 2 Tricks, die ich zum Sortieren in 2D verwende:

  • Fügen Sie Sprites die Bodenposition hinzu. Dies ist ein Punkt, an dem Sprite den Boden berührt (z. B. Männerfüße, Baumstamm, Türrahmen) und anstelle von Sprites-Pixeln danach sortieren. Auf diese Weise wird Sprite nicht von Animationen beeinflusst

  • Fügen Sie Objekten nicht sortierbare Kinder hinzu (z. B. können Männer mehrere Kinder haben, die die Sortierung nicht beeinflussen - Umhang, Bogen, Schwert usw., Türrahmen hat Kindertür). Auf diese Weise wirkt sich die Animation von untergeordneten Sprites auch nicht auf die Sortierung aus.


1

Der beste Weg, um das Sortieren von Objekten zu lösen, besteht darin, überhaupt nicht zu sortieren. Wenn Sie einen Tiefenpuffer verwenden, können Sie alles in einem Durchgang rendern. Objekte mit einem höheren Z-Wert sind weiter entfernt als Objekte mit einem niedrigeren Z-Wert.

Selbst wenn Ihr Spiel 2D ist, sollten Sie dennoch die Verwendung von 3D-Koordinaten mit einem Tiefenpuffer in Betracht ziehen, da Sie sonst für immer mit dem Algorithmus des Malers Tango spielen werden .


Stimmt, aber wie bestimmt man die Z-Position? Nur durch Sortieren
Kromster

Ja, aber diese Sortierung erfolgt jetzt offline anstatt während des Renderns. Jetzt kann der Level-Designer das Level unter Berücksichtigung der Z-Werte erstellen, ohne sich um das Abschneiden von Objekten kümmern zu müssen.
Knight666
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.