sprite drag & droppen

  • sprite drag & droppen

    Ich hab zwar lange gesucht aber nix dazu finden können. Selbst die yoyo tutorial seite hat nix was ich gebrauchen könnte.

    Ich will ganz einfach einen sprite ingame verschieben. Wenn das klappt am besten mit snap, so das man den sprite fest von flache zu fläche verschiebt. Danach dann mit einschränkungen: nur zwei felder nach vorne oder ähnliches. Halt ähnlich wie ne schachfigur ( so wie man es bei fast jedem brettspiel manuell mit der hand macht).

    Ich denke mal das ich mit dem grid feature bei den objekten arbeiten muss. Mit rumprobieren hab ich es leider nicht hinbekmmen.
    <(^-^)> <(^-^<) <(^-^)> (>^-^)><(^-^)> = Kirby dance
  • Frage: Ist das Sprite an ein Objekt gekoppelt?
    Falls ja, dann kannst Du im Event für "Left-Mouse-Button-pressed" dieses Objekts eine
    bool'sche Variable setzen (z.B. "selected=true;")

    Im Step-Event des Objektes schreibst Du:
    ...
    if (selected) {x=mouse_x; y=mouse_y;}
    ...
    Damit folgt das Objekt (und sein Sprite) dem Maus-Cursor.

    Im "Left-released-Event" setzt Du dann:
    ...
    selected=false;
    x = (x mod 16)*16;
    y = (y mod 16)*16;
    ...
    Damit lässt Du das Objekt wieder los. Ausserdem wird das Objekt in einem 16-er Raster
    ge-snapped.

    Feddisch!
  • Hmm also wie mach ich das denn genau, das script lechtet ein. Aber ich weiss nicht welche aktion ich auswächlen muss für: selected=true Ich denke mal ich bin richting in dem tab control aber welches benutze ich für so einen check X_X
    <(^-^)> <(^-^<) <(^-^)> (>^-^)><(^-^)> = Kirby dance
  • Du kannst auch einfach alles als Script ausschreiben "Execute a Piece of Code".
    Ansonsten dürfte dir "If a variable has a value" weiterhelfen.

    Da du noch nicht mit den D&D-Aktionen vertraut bist, würde ich dir erst einmal empfehlen die Hilfe zu durchforsten.
    Hier findest du zu allen Aktionen die passenden Erklärungen und es erleichtert dir sie später wiederzufinden.

    Zwar ist der Versuch eines Einsteigerprojekts zum Erlernen des Umgangs mit einem Programm sicherlich gut geeignet, jedoch erst, wenn man sich zumindest über die grundlegenden Funktionen einen Überblick verschafft hat, da man sonst Gefahr läuft jeden Schritt einzeln nachzumachen ohne wirklich selber drüber nachzudenken, und so lernt man nichts dazu.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Hmm scheint so als komm ich nicht drum herum gml zu lernen. Vielen dank für die hilfe.
    Ich werd mich dann erstmal durch die berge von tutorials wälzen befor ich dann mit meinem projekt befasse. X_X

    P.S. Sah bei bei catch the clown leichter zu bedienen aus als es ist ^^

    - Also ich hab mich jetzt mit den ganzen funktionen vertraut gemacht. Noch etwas weiter mit dem script rumprobiert aber:

    Error in code at line 1:
    if (selected) {x=mouse_x; y=mouse_y;}

    at position 5: Unknown variable selected

    Egal wie ich es auch drehe ich hab kein plan was ich mache T_T und es funktioniert natürlich nicht.
    Ich werd versuchen so schnell wie möglich gml zu lernen, aber es wär nett wenn mir jemand die funktion hier so erklären kann das ich sie einsetznen kann.
    Das macht mich ganz banane dass ich das nicht hinbekomme.
    <(^-^)> <(^-^<) <(^-^)> (>^-^)><(^-^)> = Kirby dance

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

  • Sorry, ich habe vergessen, zu sagen, dass man alle Variablen initialisieren muss BEVOR man sie abnutzt (also z.B. abfragt).

    Das heißt in diesem Fall, Dass Du im CREATE-Event des Objekts einfach mal schreibst:

    ...
    selected = false;
    ...
    (Da Dein Objekt ja anfangs nicht "selected" ist. )

    Dadurch besitzt die Variable einen Wert und ist dem Spiel bekannt - und Du vermeidest den genannten Fehler.


    PS: ich habe Dir ein Beispiel angehängt. Du musst die Datei herunterladen, umbenennen und die letzten vier Buchstaben ".txt" entfernen. Dann ist es eine ganz normale gm6-Datei, die Du in den GameMaker laden kannst.
    Dateien

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

  • WoW krass danke :D

    Hmm da hätt ich lange rumprobieren können, ganzschön komplex. 8|
    Ohje da werd ich aber viel viel zeit investieren müssen um das alles zu lernen.
    Aber besser als alles in c++ oder java zu machen ^^

    Wie lange hast du gebraucht um den GM gut zu meistern?
    <(^-^)> <(^-^<) <(^-^)> (>^-^)><(^-^)> = Kirby dance
  • Uff, ich werde das mal so formulieren:

    Bis zum "Meistern" isses noch ein ganz schöner Weg!

    Ich muss hinzufügen, dass Programmiersprachen für mich nichts Ungewöhnliches sind - ich habe irgendwo bei 20 aufgehört mitzuzählen. (Seit mehr als 30 Jahren angesammelt; FORTRAN, PL/1, ASSEMBLER für verschiedene Maschinen, Shell-Scripts und vieles mehr)

    Aber alle diese Sprachen funktionieren in einem Server-Umfeld und kennen (meist) keine asynchronen Events (also etwas, das zu jedem beliebigen Zeitpunkt passieren kann - oder auch nicht). Für mich ist es zugleich der Reiz des GM und die Schwierigkeit. Ich bastle noch an verschiedenen Mechanismen und konnte mich bis heute nicht dazu aufraffen, ein Spiel FERTIG zu schreiben (angefangen habe ich viele :-).

    Du siehst, ich kenne mich zwar beim Programmieren ein wenig aus, bin aber in anderer Hinsicht immer noch Anfänger. Sowas kann dauern :)

    Aber lass' Dich nicht entmutigen, denn jede Reise beginnt mit dem ersten Schritt. Von da an ist es leichter.

    Viel Spass beim Programmieren!