Anzeige drawn

  • GM 8

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

  • Anzeige drawn

    Ich habe eine Anzeige erstellt die oben rechts am Bildschirm steht.Wenn der Spieler im room rumläuft kommt es mit.
    Ich hab im draw event geschrieben:

    draw_sprite(anzeige,0,x-500,y-400)

    soweit klappt alles,dass problem aber ist sobald mein Spieler im room ganz hoch wandert sieht man die anzeige nicht mehr.
    Wie kann ich das Problem lösen?
  • Larsi schrieb:

    Zum Beispiel mit min und max...
    Wow. Du bist ja echt gut !1 Und jetzt geh' mal weg.

    @subteam:

    GML-Quellcode

    1. draw_sprite(anzeige,0,max(8,x-500),max(8,y-400));
    Damit bleibt deine Anzeige immer minimal 8 Pixel vom Rand entfernt, so gerät sie nicht aus dem Raum raus (falsch ich dein Problem überhaupt richtig verstanden habe).
  • Du kannst auch mit Views arbeiten wenn du Views in deinem Raum aktiviert hast und du das meinst, sprich

    draw_text (view_xview+x,view_yview+y,"text")
    So bleibt der Text immer an der selben Stelle.
    Für x und y musst du natürlich deine Werte dann eingeben.

    @Lizard771: Das was Larsi geschrieben hat ist nicht falsch, er hat lediglich Denkanstöße gegeben, damit der TE selber dadurch lernt und es nicht auswendig lernt ohne es zu verstehen.

    Wenn jeder immer nur Vorlagen gibt, gibt es ja keinen richtigen Lerneffekt dabei und es werden immer wieder Fragen gestellt. Außerdem soll das Spiel ja individuell werden und durch Copy und Paste wäre es nichtmehr ein eigenes Spiel - theoretisch.

    Edit:
    @Taidi: Okay, danke für den Hinweis. Werde ich zukünftig berücksichtigen.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von icqgamer ()

  • Ich habe mal mit

    draw_sprite(anzeige,0,max(8,x-500),max(8,y-400));

    probiert und geht soweit,nur wenn mein Spieler nach unten links wandert dann geht die anzeige
    die oben rechts steht auch weiter runter.Kann man die anzeige irgentwie fixieren das sie immer
    oben rechts am Bildschirm steht?
  • Okay habe im Draw GUI die anzeige erstellt und klappt auch mit dem Bildschirm fixieren perfekt!Danke für die Hilfe :thumbsup:

    Edit:

    Ich hab da doch noch ein kleines Problem.Ich wollte in die Anzeige zahlen anzeigen lassen aber die Anzeige steht im vordergrund.Man kann die Zahlen also nicht sehen.
    ich hab mit Deph probiert aber klappt auch nicht.Weis einer wie ich das Problem lösen kann?

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

  • subteam schrieb:

    Ich habs so gemacht das der Text erst 2sekunden später auftaucht,aber trotzdem steht es noch immer hinter der Anzeige

    Da bringt eine Verzögerung durch Alarm-Events o.ä. nichts.

    Du musst das im Draw-Event so anordnen, dass die hinteren Draw-Objekte zuerst gedrawt werden und dann die vorderen.
    Also wenn du z.B. einen Kreis und ein Quadrat zeichnest ...

    GML-Quellcode

    1. draw_set_color(c_green)
    2. draw_rectangle(0,0,100,100)
    3. draw_set_color(c_red)
    4. draw_circle(50,50,50,0)

    dann wird mit diesem Code das Quadrat zuerst gezeichnet und dann der Kreis,
    wäre es andersrum würde man vom dem Kreis nichts sehen.

    Außerdem falls du das Draw-Event neben dem Draw-Gui-Event verwendest, wird das Draw-Gui-Event danach ausgeführt
    (d.h. alles was im Draw-Gui-Event steht überlagert das Draw-Event).

    Das findet alles in einem "Step" statt (Sekunde/Roomspeed), wenn du mit Alarmen arbeitest oder es im Step-Event
    durch eine Variablenüberprüfung später anzeigen lässt kannst du daher an der Reihenfolge trotzdem nichts ändern,
    weil die Abfolge der Draws später auch nicht anders sein wird.
    Denke einfach daran, dass der GM alles in einem Step unterbringt was im Draw-Event oder im Step-Event ist.
  • subteam schrieb:

    Ich hab ja im Draw GUI die anzeige (sprite) und im Draw event den Text.Muss ich also zuerst das Draw GUI verwenden und danach das Draw event?

    Die Reihenfolge der Draw-Events lässt sich nicht ändern. Ich würde den Text einfach ins Draw-Gui-Event mitnehmen und nach dem Drawen des Sprites anwenden:

    GML-Quellcode

    1. //Im DRAW-GUI-Event:
    2. //zuerst sprite
    3. draw_sprite(spr,subimg,x,y)
    4. //danach erst den text
    5. draw_text(x,y,string)

    Stelle dir den Bildschirm einfach wie einen Papierstapel vor: Wenn du nachher noch etwas hinzufügst
    verdeckt es (unter Umständen) das was vorhin schon da war -> Von oben nach unten (im Code) = von hinten nach vorne (am Bildschirm).
  • RLP schrieb:

    Die Reihenfolge der Draw-Events lässt sich nicht ändern. Ich würde den Text einfach ins Draw-Gui-Event mitnehmen und nach dem Drawen des Sprites anwenden

    Nicht ganz :)
    Es wird immer das zuerst gedrawt das eine höheren Depth besitzt.

    LG
    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Ergo: Je mehr Käse, desto weniger Käse.
  • Okay,der text zeigt nun über der Anzeige :) .Wenn ich den Text aber in Draw GUI setze dann wandert der text weg wenn mein spieler sich fortbewegt.
    Ich hab hier im Draw GUI zuerst:

    draw_sprite(anzeige,-1,x,y)

    und danach den text:

    (view_xview+x,view_yview+y,"text" geschrieben

    wie kann ich den text genauso wie der sprite am Bildschirm fixieren?
  • subteam schrieb:

    wie kann ich den text genauso wie der sprite am Bildschirm fixieren?

    Nimm das "view_xview+" und "view_yview+" weg, beim Drawen vom Sprite steht das ja auch nicht mit drin.
    Genau dafür ist das Draw-Gui-Event ja gedacht - dass man die zusätzlichen Viewberechnungen nicht braucht. ;)

    Das "view_xview+" usw. braucht man also nur im normalen Draw-Event, da das immer, man könnte sagen, im kompletten Room ausgeführt wird,
    wohingegen alles was im Draw-Gui-Event ist nur am Bildschirm ausgeführt wird.

    edit/

    Nicht ganz :)
    Es wird immer das zuerst gedrawt das eine höheren Depth besitzt.

    Das stimmt, nur sprechen wir hier vom Draw-Event alleine, nicht vom Drawen von Objekten. ;)
    In den Draw-Events selbst gilt nur eine Regel: Von oben nach unten = von hinten nach vorne.

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