Objekt nach mouse_y ( und nicht x! ) bewegen lassen

  • GM 8

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

  • Objekt nach mouse_y ( und nicht x! ) bewegen lassen

    Guten Abend,
    ich hoffe, der Threadtitel ist für mein Problem klar genug, mir ist ehrlich gesagt nichts Besseres dazu im Sinn gekommen.

    Ich habe ein Objekt, welches ich nach mouse_y bewegen möchte.
    y = mouse_y ist mir zu "abgehackt", da das Objekt mit einer bestimmten Geschwindigkeit zu mouse_y hinkommen soll - aber auch nur zu mouse_y und nicht zu mouse_y!
    Wenn ich dann einen Linksklick mit der Maus mache, soll das Objekt sich nach rechts, wenn es gerade links ist und nach links, wenn es rechts ist bewegen
    ( Das klappt auch, auch aber nur wenn ich das mit dem mouse_y nicht einbaue ).
    Ich habe es in einem Beispiel Example, welches ich im Anhang hinzufüge schon mit move_towards_point(x,mouse_y,5) versucht, aber da gibt es einige Probleme mit, welche ihr dann in der gmk sehen könnt.
    Es gibt 2 Probleme, vielleicht sogar mehrere, wenn ich nicht was übersehen oder blöd programmiert habe.

    - move_towards_point spinnt mit x rum, wenn ich mit Linksklick klicke, bewegt sich das Objekt zwar nach mouse_y, aber auch irgendwo anders hin zu einer X Koordinate, es bewegt sich schräg nach rechts unten hin, bei mir jedenfalls.

    - Wenn das Objekt auf der Höhe der Maus ist, dann ruckelt es hin und er und bewegt sich weiter, da es ja jetzt keinen Weg mehr zum Zurücklegen hat und immer auf dem selben Punkt hin will, wie kann ich das verhindern? Ich habe es in dem Example mit Obj_Block.y!=mouse_y versucht, aber haut auch nicht ganz hin.

    Ich habe schon im Forum gesucht und mehrmals in der Game Maker Help rumgeschnüffelt und nicht wirklich etwas Passendes gefunden, langsam bin ich ratlos, ob das überhaupt möglich ist!

    MfG
    icqgamer
    Dateien
    • Test.rar

      (9,47 kB, 451 mal heruntergeladen, zuletzt: )
  • Hab mal schnell drübergeguckt:
    Bau eine Toleranzgrenze ein was die Bewegung nach oben / unten angeht. Wenn sich ein Objekt bsplw. mit 2 Pixel / Step bewegt, und genau ein Pixel unter der Maus ist, so wird es sich 2 Pixel weiter bewegen (da ja y != mouse_y) und ist somit nun 1 Pixel über der Maus. Das gleiche Spielchen passiert dann wieder, nur umgekehrt, und so hast du ein Objekt, was sich immer um 2 Pixel nach oben / unten verschiebt.

    Move_Towards wird bei dir desweiteren die ganze Zeit bis zum Klicken ausgeführt. Schön und gut - doch beim klick änderst du nur hspeed - vspeed behält aber seine Werte (von move_towards geändert). Spricht: sowohl hspeed, als auch vspeed sind mit Werten gefüllt: Wenn keines der beiden = 0 ist, ergibt dies eine diagonale Bewegung ebend hspeed Pixel auf der X-Achse und vspeed Pixel auf der Y-Achse.

    Beispiel im Anhang

    Edit: Ah da war jemand schneller mist :)

    MfG.,
    Mokuyobi
    Dateien
    • Test.zip

      (9,76 kB, 488 mal heruntergeladen, zuletzt: )
    木曜日 (Mokuyōbi)
  • Nein, du hast alles richtig verstanden Chris! Genau so meine ich das!
    Vielen Dank, ich werde mich jetzt ersteinmal intensiv mit den Code auseinandersetzen und das Thema als erledigt markieren.
    Und auch danke an alle, die es zumindest versucht haben und Zeit investiert haben.^^