Kolission mit Maus?

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

  • Kolission mit Maus?

    Kann man denn überprüfen ob ein Objekt mit der Maus "kollidiert"?
    Ziel wäre es das Objekt anders aussehen zu lassen wenn man drüberfährt. (Wie bei einem Button).

    Und: Wie kann man bei der Pro Version den Mauszeiger ändern?
  • LEWA schrieb:

    Ziel wäre es das Objekt anders aussehen zu lassen wenn man drüberfährt. (Wie bei einem Button).


    Beim jeweiligen object:
    add event->mouse->mouse_enter(oder mouse leave(damit er bemerkt das die maus net mehr da ist))

    oder:
    STEP:

    GML-Quellcode

    1. if (mouse_x>=x && mouse_x<=x+sprite_width && mouse_y>=y && mouse_y<=y+sprite_height)
    2. {
    3. //Deine Aktion
    4. }


    Edit:Verdammt Richlord war schneller
  • Richlord schrieb:

    Oder einfacher:
    In der Eventauswahl eines Objektes "Mouse" -> "Mouse enter".
    Daran hab ich natürlich nicht gedacht^^, ist aber wahrscheinlich einfacher und präziser

    Richlord schrieb:

    (@LoganTheManster:
    deine Lösung hängt vom Origin des Objektsprites ab; sie funktioniert nur korrekt, wenn der Origin genau in der Mitte des Sprites ist.)
    stimmt ;)
  • Kann man denn überprüfen ob ein Objekt mit der Maus "kollidiert"?
    Es geht viel einfacher:

    GML-Quellcode

    1. if (place_meeting(mouse_x,mouse_y,self)) { /* ... */ }


    Und: Wie kann man bei der Pro Version den Mauszeiger ändern?
    Das geht genauso gut mit Lite. Einfach ein Objekt erstellen, gewünschtes Zeiger-Sprite auswählen und folgendes ins Step Event:

    GML-Quellcode

    1. x = mouse_x;
    2. y = mouse_y;
    Zu erwähnen ist hier noch, dass das Objekt eine niedrigere Depth haben und die Option "Display the cursor" ausgeschalten werden sollte. Du kannst den Zeiger dann auch noch persistent machen, dann brauchst du ihn nur im ersten Raum platzieren.
    Den Zeiger so auch außerhalb des Fensters anzuzeigen geht nur mit einer DLL.
  • Danke für eure Antworten. :thumbsup:

    Ich dachte dass die PRO Version vom Game Maker eine bestimmte funktion bietet die den Mauszeiger permanent ändert.
    Den Zeiger durch ein Objekt zu ersetzen ist nicht gerade die Optimale Lösung. (Man kann bei schnellem hin und her bewegen der Maus sehen das das Objekt verzöger reagiert.)
  • help schrieb:

    window_set_cursor(curs) Legt den Mauszeiger, der im Fenster benutzt wird, fest. Du kannst die folgenden Konstanten benutzen: cr_default
    cr_none
    cr_arrow
    cr_cross
    cr_beam
    cr_size_nesw
    cr_size_ns
    cr_size_nwse
    cr_size_we
    cr_uparrow
    cr_hourglass
    cr_drag
    cr_nodrop
    cr_hsplit
    cr_vsplit
    cr_multidrag
    cr_sqlwait
    cr_no
    cr_appstart
    cr_help
    cr_handpoint
    cr_size_all
    sowas?
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • @LEWA:

    Das mit dem schnellen Hin- und her bewegen ist ja eig. logisch, da das Objekt ja nicht immer auf der Maus ist, seine Position wird nur jede 30tel Sekunde "upgedatet" und zwar wieder auf die Position der Maus.

    Manche ändern auch den Roomspeed auf bspw. 60, dann dürfest du das auf keinen Fall mehr sehen, allerdings darfst du dann auch nicht zu viel ausführen lassen, da das Spiel ja doppelt so schnell ist und deshalb (denke ich mir mal) auch doppelt so viel Performance braucht.


    Sorry, wenn ich jetzt irgendein Müll labere, erscheint mir aber so logisch :D
    Gruß Gamer
  • @henrik1235:
    Genau so etwas. Aber: was genau bewirken nun die Konstanten? Kann ich als Wert auch einfach ein Sprite meiner Maus angeben?

    @The Gamer:
    Natürlich ist es logisch das das Objekt verzögert reagiert.^^ (So unwissend bin ich nun auch wieder nicht. :D )
    Jedoch sagte ich auch bereits dass diese Lösung eben auch nicht optimal ist. (Wenn man nun eine richtige maus haben will...) :)
  • Das sind die verschiedenen Cursors die es gibt. Also wenn du zum Beispiel auf ein Textfeld klickst oder ein Fenster vergrößern bzw verkleinern willst. Liegt halt dann daran, was für cursors man bei Windows eingestellt hat.
    Mit diesem Code kannst du ein Sprite verwenden, was dann auf jedem Rechner gleich sein wird:

    GML-Quellcode

    1. cursor_sprite = xyz

    Solltest dann aber noch in den Einstellungen "Display the cursor" ausmachen.
  • @LEWA:

    Also ich nutz immer diese Methode, da ich sie praktischer finde, da du auch Aktionen von dem Objekt ausführen lassen kannst, usw.
    Auserdem fällt das nur bei sehr schnellem Hin- und Herbewegen auf und meistens muss man das auch nicht bei einem Spiel oder es macht nichts aus, allerdings weiß ich natürlich nicht, was für ein Spiel du machst :D

    Bsp:
    Wenn du bspw. ein Shooter machst, bei dem das Fadenkreuz mehrere Farben haben soll, ist es wahrscheinlich besser ein Objekt zu nehmen oder überhaupt wenn sich das Sprite ändert.
    Gruß Gamer