Simples Drag & Drop Inventar

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

    • Simples Drag & Drop Inventar

      So hallo Leute. Ich dachte mir einfach mal das ich das Drag & Drop System aus meinem Projekt hier mal für alle kenntlich mache.

      Es ist ziemlich simple und verzichtet auf die alten Varianten in dem man ein objekt in das Inventar Tragen muss.

      Es funktioniert recht simpel.

      Was benötigt wird.
      -Für anfänger.
      Obejkt pro Invetar Slot
      Item Objekt
      Invetar Item Sprites
      -Für Profis
      Invetar Item Sprites
      Item Objekt
      Slot erkennung durch Kordinaten eingrzung ( Viereck)

      So also ich fang dann mal an mit dem Objekt Invetar_Slot

      Ich create_Event erstellt ihr eine variabel zb.

      GML-Quellcode

      1. slot_item=0

      Die null ist gleichzeitig ausdruck dafür das dieser Slot nicht belegt und frei ist.

      So als 2 macht ihr euer Item_Objekt
      Und in ein Mouse_button-Event kommt dann rein

      GML-Quellcode

      1. cursor_sprite=item_sprite1


      Nun ist also einfach der Sprite der Maus geändert und man spart sich das wirklich aufnehmen eines Objektes.

      3 Nun macht man im Slot_Objekt in ein Mouse_Pressed-Event folgendes Rein

      GML-Quellcode

      1. if cursor_sprite=item_sprite1 then
      2. {
      3. slot_item=1
      4. cursor_sprite=//dein ursprünglicher Cursor Sprite
      5. }


      Mit diesem Schritt hast du also das Virtuelle Item einfach durch den Sprite abgefragt und hast den Frein Slot auf den Wert 1 gestellt. Jede zahl steht dann für ein bestimmtes Item. Mann könnte die natürlich gleich durch einen Namen ersetzen aber später dazu mehr warum ich micht für die zahlen Variante entschieden habe.

      4 Um nun den Slot zeigen zu lassen das er mit einem Item Belegt ist mus er nun noch zeigen welches Item In ihm(virtuel) drinn ist.
      Hier kommt dann das zahlen system zu gute.
      Wenn du vorher alles deine Items in einm Sprite gemacht hast, so ist dann jede zahl ein Spezielles Bild im gesamt sprite.
      Wobei das 1 (sprite 0) unsichtbar sein muss. alos kommplet aus einer Farbe.
      So mit kommt dann einfach im draw-Event folgendes rein

      GML-Quellcode

      1. draw_sprite(item_sprtie1,slot_item,x,y)


      Im großen und ganzen kann man sagen das das System nur über die Cursor_Sprite erkennung geht. ICh habe in meinm Projekt gute erfahrg ung damit gemacht und hab für mich heraus gefunde das das die für mich beste und simpelste Invertar Variante ist die ich kenne.

      Zum schluss noch was.
      Ich würde nocjh in ein Global_Mouse_Right_Released-Event rein machen

      GML-Quellcode

      1. cursor_sprite=//dein ursprungs cursor_sprite.


      Diesen Sxstem arbeiten nur inner halb eine Inventares.
      Wenn du es erweiter möchstes zum aufheben eine Objekte in das Invetar, Muss man natürlich noch das Objekt löschen, nach dem es per Drag & Drop im Invertal losgelassen wurde.
      Hier für fragst du einfach nach der Id des Objektes beim anklicken
      Mouse_Butten_left_Event im zb controller_objekt das ja viele erstellen.

      GML-Quellcode

      1. var:selected_item=id


      Wenn du dann wie oben den Befehl zum los lassen des Objekte im Invertar aufrufst, ergänzt du einfach den Befehl durch ein destroy_befehl
      3 Nun macht man im Slot_Objekt in ein Mouse_Pressed-Event folgendes Rein

      GML-Quellcode

      1. if cursor_sprite=item_sprite1 then
      2. {
      3. slot_item=1
      4. cursor_sprite=//dein ursprünglicher Cursor Sprite
      5. with(controller.selected_item){instance_destroy()}
      6. }
      Somit ist das Objekt aus der Spiel Welt gelöscht sofern es in das Inventar aufgenommen wurde.

      Das kling warscheinlich für manche etwas wirr, ist aber garnicht so schwer und umständlich wie es scheint. Durch kleine scripst kann man dieses Inventar-System sich selber recht einfach machen.

      Hoffe jemand kann es gebrauchen.

      mfg x-sascha
      Meine Signatur hat kein Visum für das GM Forum erhalten.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von x-sascha ()