Mauskontrolle, Objektstart, Magnet

  • GM 8
  • Mauskontrolle, Objektstart, Magnet

    Hi.

    Ich versuche mich an einem Breakout Spiel. Hab mir Tutorials gegeben, aber die sind zu rudimentär. Ich habe einige Fragen, an denen ich verbissen knabbere:

    1.
    Ich möchte den Balken der Maus folgen lassen. Das habe ich geschafft. Allerdings, löst sich dieser in Luft auf, wenn die Maus über das Spielefenster hinaus bewegt. Die Maus soll sich ausserhalb des Fensters bewegen dürfen, der Balken sollte dann aber nur nur an der Wand halten und quasi "warten" bis die Maus wieder in den Spielbereich kommt. Ideal wäre, wenn der Balken Mittig starten würde... die Maus quasi bei Spielbeginn dahin"gezwungen" wird...
    Frage: Wie stelle ich es an, dass der Balken bei Roomstart mittig sitzt, und an der Wand hält (wartet), falls die Maus das Spielfenster verlässt, sich dabei nicht auflöst?

    2.
    Der Ball soll bei Roomstart auf dem Balken liegen, und erst per Mausklick quasi weg geschossen werden.
    Frage: Wie und wo stelle ich das ein.

    3.
    Später soll das insofern kombiniert werden, als der Balken auf Bonus hin magnetisch werden kann, den Ball quasi "fängt", fest hält und erst bei Mausklick freigibt.
    Frage: Wie?

    Ich komm nicht mehr hin und denke mittlerweile fünf mal ums Eck. Vor allem da ich die Steuerung zunächst entsprechend sämtlicher Tutorials gemacht habe (also per Maus und der Ball schwirrt einfach von selbst drauf los).

    Leider bin ich nicht so GML bewandert, wäre also dankbar, entsprechende Hilfestellung zu beschreiben, da ich es richtig verstehen möchte, nicht nur abtippsen.

    Danke...
  • 1.
    Ich möchte den Balken der Maus folgen lassen. Das habe ich geschafft.
    Allerdings, löst sich dieser in Luft auf, wenn die Maus über das
    Spielefenster hinaus bewegt. Die Maus soll sich ausserhalb des Fensters
    bewegen dürfen, der Balken sollte dann aber nur nur an der Wand halten
    und quasi "warten" bis die Maus wieder in den Spielbereich kommt. Ideal
    wäre, wenn der Balken Mittig starten würde... die Maus quasi bei
    Spielbeginn dahin"gezwungen" wird...

    Frage: Wie stelle ich es an, dass der Balken bei Roomstart mittig sitzt,
    und an der Wand hält (wartet), falls die Maus das Spielfenster
    verlässt, sich dabei nicht auflöst?
    Du kannst die Maus mit dieser Funktion auf eine Position setzten:
    window_mouse_set(x,y) Setzt die Position der Maus im
    Fenster auf die angegeben Werte.
    Damit die Maus nun in der Mitte ist:

    GML-Quellcode

    1. //Fenster Mitte errausfinden
    2. var mitteX, mitteY;
    3. mitteX=window_get_width()/2;
    4. mitteY=window_get_height()/2;
    5. //Nun die Maus setzten
    6. window_mouse_set(mitteX, mitteY);

    Damit ein Objekt den Raum nicht verlässt:

    GML-Quellcode

    1. //Wir benutzten max/min für das
    2. x=max(0, min(room_width-sprite_width, x));
    3. y=max(0, min(room_height-sprite_height, y));


    Der erste Code soll nur einmal am Anfang ausgeführt werden, also kommt er ins Create-Event. Der zweite Code kommt ins Step-Event, da er ja immer ausgeführt werden soll. Der zweite Code verhindert das ein Objekt den Raum verlässt.
    wupto.net/ Nicht meine Seite!
    We love Koalas.

    GM-D-Spam-o-Meter: 32%
  • Vielen Dank.

    Das funktioniert nun auch prinzipiell fast so wie gewollt. :)

    "Fast", weil der Balken nicht prinzipiell bis zur Wand gelangt, wenn man die Maus zu schell bewegt. Das aber scheinbar willkürlich. Zwischen "pickt an der Wand" und "ist nur leicht abseits der Mitte" kommt alles vor. Wenn man hektisch spielt ist das gar nix.

    Ich hasse zwar, wenn in Spielen die nicht das gesamte Fenster benötigen die Maus im Spielfeld gefangen ist, aber ich bin am Ende meines Lateins, und werde wohl zähneknirschend die Maus ans Spielfeld fesseln oder doch wieder zur Tastatursteuerung wechseln... mir wir zumindest klar, warum alle Tutorials das Thema weit umschiffen. Maussteuerung ist "einfach" praktisch unmöglich.
  • Es lässt mir keine Ruhe...


    Der Balken folgt der Maus. (x = mouse_x)

    Wenn die Maus das Spielfeld verlässt, verschwindet der Balken. Abhilfe habe ich dafür gefunden: (x = min(max(mouse_x,0),room_width) ), bzw. auch der hier vorgeschlagene Code.
    Das funktioniert. Der Balken bleibt im Raum.

    ABER:

    Wenn man nun die Maus zu schnell aus dem Spielfeld bewegt, bleibt der Balken stehen wo er gerade war, wenn man schnell genug ist auch in der Mitte des Spielfeldes. Das ist unerwünscht.

    Hat jemand eine Idee, wie man da herangehen kann? Wenn die Maus das Spielfeld verlässt, soll der Balken mit der Wand kollidieren - den Weg bis dahin also auf jeden Fall weiter ausführen.