Objektmenü

  • GM 8

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

  • Objektmenü

    Ich hätte in meinem Spiel gerne ein ausfahrbares Objektmenü am unteren Bildschirmrand, dass ganze sollte so funktionieren, dass ein sich mit dem View mitbewegender Pfeil unten in der rechten Ecke bleibt, welcher auf klick verschwindet und dann unten einen Menübalken ausfährt, in welchem Objekte gelagert sind, welche man an bestimmten Stellen im Spiel einsammeln kann und welche dann per drag and drop auf einen anderen Punkt (in einem anderen Room) gezogen werden können, wo durch dies dann weitere Events ausgelöst werden. Mein Problem: Ich habe keinen Plan wie auch nur irgendein Schritt dieses Prozesses funktionieren soll und wäre froh wenn irgendjemand mir eine ausführliche erklärung bieten könnte.

    Danke im Voraus, julizwiebel
  • Da du GML-Anfänger bist, ist es schwer zu erklären. Ich versuch es mal.
    Du bräuchtest mal ein object, das rechts bzw. links unten immer folgt, das geht ganz leicht.
    Du erstellst ein Object gibst diesen Object einen Sprite, und schreibst ins Draw-Event: (Alles jetzt per hand geschrieben und nichts getestet)

    GML-Quellcode

    1. draw_sprite(sprite_index,image_index,view_xview[0]+view_wview[0]-sprite_width,view_yview[0]+view_hview[0]-sprite_width); //Somit wird es immer rechts unten gedrawt.


    Die Objecte die im Menü erscheinen sollen brauchen im Create-Event ein:

    GML-Quellcode

    1. instance_deactivate_object(self); //Dazu da um das Object zu deaktvieren und erst dann erscheinen zu lassen wenn man auf den Pfeil drückt.


    Zurück zum Object Pfeil.
    Im Left-Pressed-Event musst du schreiben.

    GML-Quellcode

    1. instance_activate_object(object01);
    2. instance_activate_object(object02); //Das sind die Objecte die im Menü drinnen sind, und nun auch erscheinen werden.
    3. instance_deactivate_object(self); //um den Pfeil wegzugeben, wird es vorübergehend deaktiviert.


    So jetzt musst du die Objecte noch richtige zeichnen lassen, damit sie immer im View sind. Diese Arbeit werd ich dir nicht nehmen, du sollst auch was zum denken haben, sonst lernt man ja nix :)
    Wenn es wirklich nicht geht, kann ich es dir ja versuchen zu erklären.

    MfG Rodrog

    P.S.: Ich hoffe ich hab dir mal alles richtig erklärt und keine Tippfehler gemacht! Zu meiner Verdeitigung, ich habe mir dir Hand gebrochen und es ist schon ziemlich spät. :thumbsup:
    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.
  • Soweit habe ich alles verstanden und kann es auch ausführen, ich habe nur die Positionierung der Objekte innerhalb des Views nicht verstanden, wie kann ich die zu aktivierenden Objekte wo anders als dort in der rechten unteren Ecke anzeigen lassen? sie kreieren und dem View folgen lassen kann ich jetzt aber positionieren? das geht nochnicht

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

  • Es gibt dazu 2 mir bekannte Möglichkeiten.

    Nr. 1:
    Du lässt das object jeden Step immer richtig positioniern (schlechte Methode und hässliche Methode). Da sich das View zu schnell bewegen kann und dann die Objecte "nacheilen".
    Das würde so gehen:

    Step-Event:

    GML-Quellcode

    1. x = view_xview[0] + /*Deine Zahl*/ //view_xview[0] ist der linke obere Punkt deiner View Position, wenn sich die Position ändert,ändert sich natürlich auch der wert.
    2. y = view_yview[0] + /*Deine Zahl */ //Theoretisch ist es wieder das selbe, du müsstest jetzt nur noch den richtigen werd finden, um das Object immer schön zu positionieren.


    Jetzt kannst du ganz normal im Left-Button-Pressed-Event die sachen benutzen, die du halt brauchst.

    Nr. 2:
    Diese Methode ist bischen schwerer, aber auch viel schöner und viel besser! Hier wird das Object gezeichnet und mit Hilfe des global-Left-Button-Pressed-event die Aktion ausgeführt.

    Draw-Event:

    GML-Quellcode

    1. draw_sprite(sprite_index,image_index,view_xview[0]+/*Deine Zahl*/ , view_yview[0] + /*Deine Zahl*/); //Die Zahlen müssen wieder mit den richtigen ausgetauscht werden.


    Global-Left-Mouse-Pressed-Event:
    Hier ist es schwierigier, aber auch relativ leicht.

    GML-Quellcode

    1. if(mouse_x > view_xview[0] && mouse_x < view_xview[0]+sprite_width && mouse_y > view_yview[0] && mouse_y < view_yview[0] +sprite_height)
    2. {
    3. //Deine Aktion
    4. }


    Jetzt musst du es richtig platzieren, das überlass ich aber dir, da man sonst nichts lernt^^ (Zurzeit ist es so ausgelegt, dass das Object immer links oben ist!
    Für weitere Fragen, steh ich immer offen.

    MfG Rodrog
    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.