Ich möchte in der Lage sein, das zu tun, was Sie auf dem Bild sehen, aber mit einer einzigen Wand. Der Spieler sollte in der Lage sein, auf beiden Seiten desselben Objekts zu gehen . Das heißt, dieselbe Wand befindet sich unter dem Helden, wenn ich von dort herunter gehe, und über dem Helden, wenn ich von oben komme.
Es ist wie zwei Tiefen in derselben Wand, es geht also nicht nur darum, sie vorher oder nachher zu zeichnen. Ich könnte das Objekt in zwei Teile schneiden, aber das wäre die einfache (und möglicherweise rechenintensive) Lösung. Wie soll ich das machen?
2d
draw-order
depth
Xkynar
quelle
quelle
Antworten:
Hier sind drei Möglichkeiten, dies zu tun. Welches geeignet ist, hängt davon ab, welche Art von (grafischem) Spiel Sie machen.
Wie Benutzer Fabinout bereits kommentierte: "Das Objekt in zwei Teile teilen ... Der obere Teil befindet sich hinter dem Charakter und der untere Teil befindet sich zwischen dem Spieler und dem Charakter." Wenn Sie ein Spiel auf der Basis von Kacheln erstellen (die angezeigten Pfade sind die einzigen zwei möglichen Pfade in der Nähe der Wand), ist dies wahrscheinlich eine gute Möglichkeit, dies zu tun. Beachten Sie, dass der Abstand zwischen dem oberen und dem unteren Pfad mindestens so groß sein muss wie die Höhe des Zeichens, damit dies funktioniert.
Ein Nachteil dieser Methode ist, dass sie nur in Fällen wie diesem hilft. Es ist keine allgemeine Strategie zum Stapeln von Sprites.
Zeichne alle Sprites - sowohl den Spieler als auch die Szenerie - von oben nach unten in der Reihenfolge ihrer Bodenposition (Basis der Wand, Füße des Spielers). Dies führt automatisch dazu, dass die Wand auf der richtigen Seite angezeigt wird. Dies ist eine gängige Strategie für Spiele im Stil von "isometrisch" und "2D-RPG".
Ein weiterer Vorteil davon ist, dass es im Allgemeinen gut aussieht, selbst wenn Objekte sich gegenseitig passieren - z. B. Charaktere, die die Bewegung anderer nicht blockieren. durch ein Feld aus hohem Gras gehen. Nachteile sind, dass Sie die Zeichnungsreihenfolge effizient bestimmen müssen (z. B. entweder Ihre Sprites sortieren oder eine 2D-Anordnung von Kacheln haben, die wissen, welche Sprites darin enthalten sind), und dass es kompliziert wird, wenn Sie Objekte haben, die nicht alle visuell auf dem verwurzelt sind gleiches Bodenniveau.
Haben Sie eine "vordere Ebene" und eine "hintere Ebene", in der Ihr Charakter die eine oder andere besetzt (und die Wand nach hinten, aber vor vorne gezeichnet wird). Je nachdem, wie Sie sich der Wand nähern, wird der Charakter durch Triggerzonen auf die vordere oder hintere Ebene umgeschaltet. So gehen Sonic the Hedgehog-Spiele mit Loop-the-Loops um.
Der Vorteil ist, dass Sie im Wesentlichen zwei unabhängige 2D-Ebenen haben können, auf denen Sie Ihre Ebenenelemente aufbauen können. Dies ist jedoch besser für ein Spiel geeignet, bei dem die vertikale Bewegung nach oben springt, während Ihr Spiel aufgrund der Form Ihrer Grafik ein Spiel zu sein scheint, bei dem sich die vertikale Bewegung auf dem Bildschirm auf dem Boden nach vorne / hinten bewegt und es weitaus mehr gibt als zwei verschiedene Positionen in dieser Dimension.
quelle
Zeichnen Sie Objekte in der Reihenfolge des
Y
Werts, sodass Objekte "weiter entfernt" (weiter oben auf dem Bildschirm) vor / unter "näheren" Objekten gezeichnet werden. So einfach.Geben Sie den Objekten im Allgemeinen nur einen Tiefenwert (der
Y
je nach Spiel und Anforderungen implizit basierend auf oder explizit festgelegt werden kann) und rendern Sie in dieser Reihenfolge.Dies ist der "Malalgorithmus" bei der Arbeit.
quelle