depth von ingame erstelltem Objekt

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • depth von ingame erstelltem Objekt

    Hi Leute,
    das hier ist mein erster Beitrag in diesem Forum deswegen bin ich mir nicht sicher ob ich alles richtig gemacht habe, mit der Wahl des Forums etc..

    Habe folgendes Problem: Es gibt ein Spieler-Objekt und mehrere Gegner-Objekte , die schon im Room-Editor plaziert wurden.(Also schon direkt am Start des Spiels existieren)
    Beide haben einen depth Wert von 100. Nun wird im Spiel irendwann ein weiters Objekt erstellt ,(Eine Regenpfütze in dem Fall) mit einem depth wert von 101, also
    müsste es doch hinter dem Spieler und dem Gegner Objekt sein , wenn diese durch die Pfütze laufen. Doch dem ist nicht so, das Gegner Objekt ist richtiger Weise vor der Pfütze und das Spieler
    Objekt nicht?? Woran liegt das ,beide Objekte haben den gleichen depth Wert :< ?

    Bitte um Hilfe

    Edit: Hab eben zum Testen mal das Pfützen Objekt direkt im Room Editor plaziert, genauso wie die anderen Objekte, und es funktioniert
    dann einwandfrei. Anscheinend liegt es daran ,dass das Objekt erst später, nach den anderen Objekten gezeichnet wird.
    Wie kann ich das beheben?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von chrisbo ()

  • object_set_depth(ind,depth)
    Objekte mit höherem Wert sind tiefer gelegen. Das Objekt mit Depth 10 wird demnach unter dem Objekt mit einem Tiefenwert 9 gezeichnet.
    Bei Objekten mit gleichem Wert kommt es darauf an, welches zuerst von GM gezeichnet wird.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Michaelp800 ()

  • Erstmal, danke für die schnelle Antwort :)

    Ich versteh schon das ein höherer depth Wert bedeutet ,dass das Objekt unter dem Objekt mit dem geringeren depth Wert gezeichnet wird.
    Das funktioniert schließlich auch mit dem Gegner-Objekt, nur leider aus irgendeinem Grund , den ich nicht verstehe nicht mit dem Spieler-Objekt :(

    object_set_depth bringt leider keinen Unterschied, das eine Objekt-Läuft über der Pfütze, das andere untendrunter :<
  • Michaelp800 schrieb:

    Bei gleichen Werten ist es reine Zufallssache.

    Soweit ich weiss ist das keine Zufallssache.
    Sofern beide Objekte dieselbe Depth haben, hängt die Abarbeitungsreihenfolge nurnoch von der Instanz-ID ab.
    Sprich: das Objekt was später erstellt wurde wird dann später abgearbeitet. Hab das glaube ich mal sogar getestet. Bin mir da aber nicht 100%ig sicher.

    /Edit:
    @Michaelp800

    Genau das habe ich im ersten Beitrag beschrieben. ;)

    Ups! Sry. Genau das passiert wenn man sich die Beiträge vorher nicht gründlich durchliest. XD

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von LEWA ()

  • Hm es sind ja nur die depth Werte von den beiden Objekten gleich die sich über der Pfütze bewegen sollen, nicht die Pfütze, der depth Wert ist höher.
    Es ändert auch nix wenn ich die depth vom Spieler,Gegner Objekt ändere , auch wenn diese ungleich sind, aber trozdem niedriger als der depth Wert der Pfütze.
    Eins läuft immer drüber , eins untendrunter :(

    Und wie gesagt , es funktioniert ja auch wenn alle Objekte direkt am Anfang bereits existieren, also schon im Room-Editor plaziert wurden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von chrisbo ()

  • LEWA schrieb:

    Soweit ich weiss ist das keine Zufallssache.
    Sofern beide Objekte dieselbe Depth haben, hängt die Abarbeitungsreihenfolge nurnoch von der Instanz-ID ab.

    Genau das habe ich im ersten Beitrag beschrieben. ;)


    @chrisbo:
    Kannst du den Fehler in einem neuen Projekt reproduzieren? Also nur eine Pfütze und zwei Objekte, die darüber gehen. Irgend etwas stimmt halt trotzdem nicht bei der Sache mit Depth.
  • Kurz: Nein, es gibt keinen Grund dafür, weil es so nicht vorkommen kann.
    Lang: Es liegt daran, dass object_set_depth die Depth der Objekt "Klasse" ändert und die Instanzen somit nicht einbezogen werden. Benutz' dafür die lokale Variable depth (Oder änder die Depth einfach im Objekteditor in der IDE).

    - Tobi97
  • Hab das Problem gelöst <.< Hab in einem anderen Objekt im Draw Event angegeben, das ein sprite (ein anderes, nicht Spieler,Gegner oder Pfütze) mit einem
    bestimmten depth Wert gedrawt wird. Nun hab ich den depth Wert entfernt , und es funktioniert einwandfrei.
    Uff endlich das Problem gelöst , das alles wegen so einem blöden Fehler ^^

    Danke an alle die mit geantwortet haben :)
  • Tipp: Pass generell mit dem Draw-Event auf. Verwende dieses wirklich nur, wenn du Draw-Funktionen verwendest und es sich in keinem Objekt befindet, das vom Spieler "gesteuert" werden muss. Separate Objekte sind hierzu, wie du gesagt hast, optimal. :)

    Zu Beginn haben viele GM-Einsteiger diverse Probleme mit dem Draw-Event. Aber man gewöhnt sich rasch daran. 8)