Probleme mit depth und Iso-Perspektive

  • Probleme mit depth und Iso-Perspektive

    Hi

    Ich habe einen Wurm programmiert, der zufällig durch einen Raum fliegt. Er besteht aus acht Objekten. Einen Kopf und sieben Körpersegmente. Der Kopf gibt die Richtung an und die Segmente folgen jeweils dem Nächsten. Das Ganze soll in isometrischer Perspektive dargestellt werden. Ich habe also den Kopf und ein Segment aus acht Richtungen als Animation gemacht. Zuletzt im step-event von jedem Objekt mit depth = -y die Tiefe zuweisen und fertig. Das funktioniert einwandfrei, solange sich der Wurm nach unten bewegt. Sobald er sich nach oben bewegt, scheint irgendwas nicht mehr korrekt abzulaufen. Die Sprites überlagern sich nicht immer in der richtigen Reihenfolge und flakern teilweise vor und zurück.
    Hat vielleicht jemand von euch ähnliche Erfahrungen gemacht, oder sogar eine Idee, wie ich dieses Problem in den Griff bekomme? Habe ich was übersehen?

    Ich benutze GM Studio 1.4.
    So solls aussehen: O)))))))
    So siehts aber aus: O))())((O

    Danke!
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇

  • Hi, bis sich jemand meldet, der vielleicht eine Lösung für Dein Problem hat,
    kannst Du ja inzwischen im englischen Forum vorbei schauen:

    forum.yoyogames.com/index.php?…aring-with-depth-y.47615/


    Da hat jemand selbiges Problem und es kommt zwar zu keiner Lösung für ihn,
    aber es werden einige Ansätze diskutiert, die Dir vielleicht weiter helfen.
    Falls Du so gur Englisch kannst, wie ich, dann empfehle ich Dir DeepL:

    deepl.com/translator


    Die Übersetzung ist wirklich gut und meist auch sehr verständlich.


    Miradur
  • Wenn das tatsächlich ein GM Bug ist oder sich mit depth = 1-y nicht lösen lässt, schalge ich dir folgenden workaround vor.

    Du lässt den ganzen Wurm nur aus einem Object heraus zeichnen. Ich nehme an du brauchst die Wurmsegmente als eigene objects für collisionen oÄ. Die lass aber dann einfach unsichtbar und nur der Kopf zeichnet an deren Position die einzelnen Sprites. Dazu hat der Kopf ein Array in dem seine Segmente abgespeichert sind. Dieses Array wird immer durch die y position der segmente sortiert und dann von index 0 bis ende gedrawed.
    Damit sollte es gehen.

    GML-Quellcode

    1. // sort wurm array by y (lower first)
    2. for( i of wurmArray ){
    3. //draw segment(i.x, i.y, i.sprite)
    4. }

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Geil! Jetzt gehts. Danke für eure Ideen. Hab dann ein bisschen rumprobiert mit euren Ansätzen. Was mich schliesslich darauf gebracht hat, dass der Wurm eine zu kleine depth haben könnte. Da der Wurm hinter den Tiles rumgurken soll habe ich depth = 100000000-y; gemacht. Und das hat anscheinend Probleme verursacht. Habe jetzt eine Null weggenommen und es funzt tadellos.
    PUTREFACTION ////
    ◇ ALIEN BASTARDS ◇ SLY PITCH ◇ SHOVE MASTER ◇