Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.03.2012, 00:53

Zeichenreihenfolge von pseudo 3D-Objekten

Hallo Forum,

ich bastle gerade ane einem kleinen Flash-Spiel in Actionscrip3. Die Spielfigur bewegt sich durch ein Labyrinth und wird aus der Vogelperspetive betrachtet, so das die Spielfigur immer in der Bildmitte ist. Nebenbei muss man noch Schätze suchen und sich vor Feinden in Acht nehmen.
Eigentlich is alles genauso wie in Pac-Man, nur das die Ansicht eben immer auf die Spielfigur zentriert ist.
Ich benutze dabei eine pseudo-3D-Graphik, indem ich 2D-Bilder durch Matrixtransformation so verzerre, das sie wie die Wände das Labyrinths erscheine, das man von oben betrachtet.
Betrachet man so eine Wand direckt von oben, so ist sie eigentlich nur ein Strich (da das Bild entsprechend gestaucht wurde), bewegt man ich allerdings weiter davon weg, sieht man sie immer mehr von der Seite (und das Bild wird entsprechend gestreckt).
Ich hoffe, ich kann die Situation mit diesem Paint-Bild verdeutlichen:

(Link)

Der Spieler (auf den die "Kamera" zentriert ist) ist der Dicke rote Fleck, das Bild von der Wand ist eigentlich nur ein gelbes Rechteck mit dem Buchstaben A darauf. Im ersten Bild ist der Spieler von der Wand entfernt, sodas sie weit gestreckt wird. Im zeiten Bild ist er nahe heran gekommen, wodurch die Wand mehr ist Zentrum gerückt wurde und darum fast von oben gesehen wird, und darum schmal und gestaucht erscheint.

Jetzt das Problem: In welcher Reihenfolge soll ich Wände, Spieler, Gegner usw. zeichnen lassen, so das sie sich wie erwartet überdecken?
Ich brauche eine Vergleichsmethode, mit der ich zwei der oben genannten Objekte vergleichen kann, um zu entscheiden ob das Eine vor/nach dem Anderen gezeichnet werden muss. Diese könnte ich dann in irgendeinem Sortieralgorythmus über alle Objekte anwenden und dan hätte ich die zeichenreihenfolge.
Meine eigenen Ansätze führten bisher immer zu ungenügenden Ergebnissen (eine Hintere Wand wird über eine Vordere gezeichnet) oder zu Endlosschleifen beim Sortieren.
Hier nochmal eine Skizze zum Verdeutlichen:

(Link)

Die Linien sind einfach die Wände von oben.
Da der Spieler (Roter fleck mit der 6) immer in der Bildmitte ist (auch wenn das jetzt in dem Bild nicht so aussieht), währe die korreckte Zeichenreihenfolge der Objekte: 1 2 3 4 5 6 (wobei man 2 und 3 auch tauschen könnte).
Währe super, wenn jemand eine Idee hat, wie man die korreckte Zeichenreihenfolge bestimmen kann, denn sonst müsste ich auf poplige 2D-Grafik zurück greifen.

Hier noch ein paar Infos:
Linien werden natürlich durch 2 Punkte (je mit XY-Wert) definiert.
Linien schneiden sich nicht, es kann aber eine genau da aufhören, wo die Andere beginnt.
Spieler/Gegner müssen nicht miteinander verglichen werden, aber mit den Wänden.

mfG Marc123