Seite 4 von 6

Verfasst: 03.10.2005 13:30
von zigapeda
normal also nicht iso.
ka wie das heißt.

Verfasst: 03.10.2005 14:34
von ZeHa
Also z.B. so wie bei Pokemon? Mir fällt grad kein anderes Beispiel ein ;) aber da sieht man ja alles so halb von oben...

Screenshot: http://img.photobucket.com/albums/v233/ ... lmorn1.png

Soweit ich weiß nennt sich das Top-Down-Perspektive, aber Vogelperspektive müßte auch richtig sein.

In diesem Fall brauchst Du echt nur nach dem y-Wert zu gehen. Du fängst oben mit zeichnen an und arbeitest Dich runter, dadurch werden automatisch die Figuren verdeckt, die hinter einem Objekt oder anderen Figuren stehen. Ist also ganz einfach.

Verfasst: 03.10.2005 14:57
von Kaeru Gaman
ich glaube nicht, daß er sowas meinte, denn das ist auch ne einfach top-down-matrix.

@peda

was meinst du denn...

bei schwenkbarem 3D nimmt dir ja die Engine das ab....

Verfasst: 03.10.2005 15:18
von Zaphod
selbst bei iso reicht im prinzip noch die y sortierung, nur muß man da den zeichenvorgang in zwei durchläufe aufteilen. zuerst zeichnet man alle böden, dann schaut man von hinten nach vorne beim levelzeichnen ob auf einem feld eine wand steht. wenn da eine wand steht zeichnet man diese, wenn nicht schaut man ob auf dem feld objekte liegen. liegen da objekte sortiert man sie nach der y position und zeichnet sie entsprechend der reihe nach.
wichtig ist, dass man das zeichen in die richtige richtung durchführt. wenn die obere bildschirmmitte die kartenkoordinaten (0,0) darstellt, dann zeichnet man erst eine komplette x reihe ab (also zum eckpunkt rechts unten auf dem bildschirm). dann zeichnet man die nächste zeile.

das funktioniert tatsächlich, auch wenn man es sich schwer vorstellen kann.

Verfasst: 03.10.2005 15:52
von Kaeru Gaman
ich denke, das ist ihm klar:
Auch wenn die Tiles wie Parallelogramme aussehen, geht es.
also, ISO meinte er garnicht...

deshalb interessiert mich, welche darstellung er meinte... o_o

Verfasst: 03.10.2005 15:56
von ZeHa
Das funktioniert aber NICHT, wenn die Figur an jeder beliebigen Position stehen kann. Denn wenn z.B. die Figur mehr oder weniger auf zwei Feldern gleichzeitig steht (also Position geteilt durch Tilebreite keine Null ergibt), dann gibt es Grafikfehler.

Ich arbeite grad selbst an einer Iso-Engine und hab auch schon einiges rumprobiert, da muß man dann schon noch ein wenig tricksen und schummeln, bis endlich mal alles korrekt funktioniert, bspw. muß man in bestimmten Fällen ein halbes Tile nochmals drüberzeichnen etc.

Verfasst: 03.10.2005 16:01
von ZeHa
Okay also:

Code: Alles auswählen

Iso-Tiles sehen so aus:

    / \
  /     \
  \     /
    \ /

Top-Down-Tiles:
   ___
  |   |
  |   |
  |___|

Die Parallelogramm-Tiles dann in dem Fall so:
     ___
   /    /
 /___ /
Die letzte Perspektive nennt man auch Kabinett-Perspektive. Bei der und auch bei der Top-Down reicht ganz einfach y-Sortierung, bei Iso NICHT.

Verfasst: 03.10.2005 16:07
von ZeHa

Verfasst: 03.10.2005 16:14
von Kaeru Gaman
ach so.. also meintest du doch iso

dann lies dir den post von zaphod nochmal durch: es geht wirklich

[edit]
man braucht noch nicht einmal in 2 vorgänge aufzuteilen.
[/edit]

iso ist nur ein um 45° gedrehtes top-down

wenn man in der oberen ecke anfängt, funktionierts...

[edit2]
ZeHa hat geschrieben:Das funktioniert aber NICHT, wenn die Figur an jeder beliebigen Position stehen kann. Denn wenn z.B. die Figur mehr oder weniger auf zwei Feldern gleichzeitig steht (also Position geteilt durch Tilebreite keine Null ergibt), dann gibt es Grafikfehler.
die figur kann im grunde nicht wirklich auf 2 feldern stehen.
nimm mal die mitte der unteren kante als referenzpunk.
zeiche die figur in dem schleifendurchlauf, wie das Tile,
auf dem sich dieser referenzpunkt befindet.

das ist ausreichend, den kleine abweichungseffekt der bleibt sieht man auch bei professionellen games.

[edit3]
wenn du zusätzlich in 2 durchgänge aufteilst, wie von Zaphod angeregt, verschwindet auch dieser effekt.

Verfasst: 03.10.2005 16:24
von ZeHa
Ich habs schon probiert, und zwar auch schon in unterschiedlichen Zeichnungs-Richtungen. Es geht NICHT. Und zwar genau dann nicht, wenn die Figur eben nicht pro Walk-Zyklus ein komplettes Feld läuft, sondern wenn man sich ganz frei pixelweise bewegen kann. Dann kommt es zwangsweise zu Fehlern. Einfaches Beispiel:

Code: Alles auswählen

XXX
X..
XX.
Das ist die Map... X = Wand, . = freier Raum.
Nehmen wir nun an, die Figur steht in Feld (3,2) (und wir beginnen jetzt mal bei 1 mit Zählen). Noch paßt alles. Läuft die Figur jetzt aber nach unten, also auf das Feld (3,3) zu, und sie steht so halb auf Feld (3,2) und halb auf Feld (3,3), dann wird die Figur gezeichnet, wenn Zeile 2 dran ist. Nun kommt Zeile 3 und zeichnet die Wand in (2,3) und übermalt somit die Figur, die eigentlich sichtbar sein sollte.