Maus-Position nur innerhalb des rooms

  • GM 8
  • Maus-Position nur innerhalb des rooms

    Hallo ich habe ein kleines Problem.
    Kann sein, dass es dafür eine sehr einfache Lösung gibt, habe aber dazu nichts finden können und bin langsam am verzweifeln.

    Ich habe einen room der kleiner ist, als die Auflösung meines Bildschirms.
    Dieser wird in Fullscreen angezeigt, aber in normaler Größe, d.h. drumherum ist eine schwarze Fläche, wo eben nichts ist.

    Jetzt kann mein Cursor aber trotzdem noch aus dem Bereich des rooms heraus.
    Das möchte ich aber nicht.
    Ich hätte es gerne, dass an den Grenzen des rooms auch Schluss für den Mauscursor ist.
    Lässt sich das machen?

    Wer genau wissen will, warum ich das brauche, darf hier weiterlesen. :D
    Ich habe einen breiten Raum eingeschränkt mit einem View und ich möchte ihn gerne durch Mausgewegungen verschieben können.
    (Wie bei Moorhuhn)
    Wenn ich jetzt mit der Maus nach links gehe, dann fängt der View irgendwann an sich nach links zu bewegen. Ich kann aber dennoch noch immer weiter mit der Maus nach links, bis hin zu -500 oder weiter.
    Wenn ich dann mit der Maus aber nach rechts fahre, fährt der View immer noch weiter nach links... erst wenn ich mit der Maus halt wieder im Bereich 0 und aufwärts ankomme, stoppt er.
    Und das ist natürlich blöd.
    Es ist schwierig zu beschreiben und hört sich bestimmt total verwirrend an. :wacko:
    Aber ich hoffe, ihr versteht was ich meine, und könnt mir helfen! 8)
  • Es gibt die Funktionen mit display_mouse_set(x,y) und window_mouse_set(x,y), mit denen du die Mauskoordinaten setzen kannst. In diesem Fall ist window_mouse_set() angebrachter, da du sie ja nur im Fenster ändern willst.
    Im Step überprüfst du dann einfach, ob die Maus überm Rand ist (ich glaub du schaffst das alleine) und wenn ja, setzt du sie einfach mittel window_mouse_set() wieder direkt an den Rand.
  • Ja mit der windows_mouse_set() Funktion hatte ich auch schon rumgespielt, kam aber nie zu einem Ergebnis...
    Deine Version, Tice, musste ich etwas umändern.

    So funktioniert es jetzt bei mir:

    GML-Quellcode

    1. roomx = (window_get_width()-view_wport[0])/2;
    2. roomy = (window_get_height()-view_hport[0])/2;
    3. window_mouse_set(max(roomx,min(window_mouse_get_x(),roomx+view_wport[0])),max(roomy,min(window_mouse_get_y(),roomy+view_hport[0])));


    Vielen Dank euch beiden! :thumbup:
  • Benutzer online 1

    1 Besucher