Verfolgerperspektive - umsehen mit Maus

  • GM 7

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

  • Verfolgerperspektive - umsehen mit Maus

    EDIT: Alter Thread gelöscht

    Hallo zusammen

    Ich brauche hilfe bei meinem 3D-Game.
    Zum grössten Teil habe ich die Dateien der 3D-Tutorials übernommen und dann noch modifiziert.

    Ich habe es zwar geschafft, dass die Kamera "camera" meinen Spieler "obj_player" verfolgt, jedoch habe ich es nicht geschafft, dass man sich auch noch mit der Maus umsehen kann.
    Beim Tutorial von Schattenphoenix gabe es beim "ego-view" genau dieses "Umsehen" was ich gebrauche (cursor immer zentriert und mit Maus umsehen).

    Also habe ich versucht mit

    GML-Quellcode

    1. d3d_set_projection(obj_player.x-40, obj_player.y-40, usw.)
    anstatt

    GML-Quellcode

    1. d3d_set_projection(x, y, usw.)
    versucht - so sollte die "camera" hinter den Player gesetzt werden.
    Leider geht das aber nicht.

    Es geht nur, wenn ich entweder die Kamerasicht bei x,y belasse (dann kann ich mich mit der Maus umsehen - bin aber dort, wo die camera hingestellt worden ist und nicht immer hinter dem Spieler) oder ich mache es mit der Ego-Perspektive (dann habe ich das Umschauen, sehe aber meinen Spieler nicht mehr- ist ja aus der Sicht des Spielers).

    >> Ich hab die Datei mal angehängt (Muss genau so bleiben beim entzippen).

    Hoffe ihr versteht, was ich meine.
    Vielen Dank schon mal.


    Mfg
    Dateien
    • 3d_game.rar

      (769,57 kB, 222 mal heruntergeladen, zuletzt: )
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von xx-XtremeX-xx ()

  • Also die Logische Konsequenz ddafür ist eine Formel zu entwickeln!

    Was haben wir?
    Als erstes mal die Position vom Spieler: Spieler.x und Spieler.y
    dann gibt es noch den Abstand den die Kamera zum Spieler haben soll: ich nenn ihn mal radius: Spieler.r
    und dann haben wir noch den Winkel welcher die Richtung des Spielers(von oben betrachtet) beschreibt Spieler.direction
    Aus einfachheitsgründen lasse ich die 3. Dimension außer acht, d.h. man kann nicht nach oben oder unten gucken.(kannst du ja später noch einbauen, ist genauso einfach)

    Wir wollen jetzt die Position der Kamera in der Kreisbahn berechnen:
    ins step event der Kamera:

    GML-Quellcode

    1. Kamera.x = Spieler.x + lengthdir_x(Spieler.r, 360 - Spieler.direction);
    2. Kamera.y = Spieler.y + lengthdir_y(Spieler.r, 360 - Spieler.direction);

    die Kamera sollte auf den Spieler zeigen, oder mittels lengthdir in die richtung vor ihm.

    Wie Lengthdir funktioniert:

    Kamera.x = Radius * cos(Winkel) + Spieler.x;
    Kamera.y = Radius * sin(Winkel) + Spieler.y;

    wobei zu beachten ist ob der Winkel im Uhrzeigersinn oder gegen den Uhrzeigersinn angegeben wird:

    Kamera.x = Radius * sin(Winkel) + Spieler.x;
    Kamera.y = Radius * cos(Winkel) + Spieler.y;

    beschreibt die andere Richtung!

    Nun zur implementierung:

    Im Step event überprüfen ob der Spieler die Maus bewegt:

    GML-Quellcode

    1. if(window_mouse_get_x()<(display_get_width()/2-8))
    2. {
    3. Spieler.direction+= drehgeschwindigkeit*(display_get_width()-window_mouse_get_x())/360;
    4. }
    5. if(window_mouse_get_x()>(display_get_width()/2-8))
    6. {
    7. Spieler.direction-= drehgeschwindigkeit*(display_get_width()-window_mouse_get_x())/360;
    8. }

    Drehgeschwindigkeit einfach mal verschiedene Werte einsetzen, was halt am besten aussieht.

    Zusammenfassung:
    in den(das?) Step Event

    GML-Quellcode

    1. Kamera.x = Spieler.x + lengthdir_x(Spieler.r, 360 - Spieler.direction);
    2. Kamera.y = Spieler.y + lengthdir_y(Spieler.r, 360 - Spieler.direction);
    3. //variante 1: sieht direkt auf den Spieler
    4. d3d_set_projection(Kamera.x, Kamera.y, Kamera.z, Spieler.x, Spieler.y, Spieler.z, 0, 0, 1);
    5. //variante 2: sieht ein stück hinter den Spieler was meist besser aussieht
    6. xto= Spieler.x + lengthdir_x(Spieler.r, Spieler.direction);
    7. yto= Spieler.y + lengthdir_y(Spieler.r, Spieler.direction);
    8. zto= 10;//hier auch ausprobieren welche werte ok sind um nicht von unten auf den spieler zu sehen
    9. zfrom= 20;// dito
    10. d3d_set_projection(Kamera.x, Kamera.y, zfrom, xto, yto , zto, 0, 0, 1);
    11. //hier gehts weiter
    12. if(window_mouse_get_x()<(display_get_width()/2-8))
    13. {
    14. Spieler.direction+= drehgeschwindigkeit*(display_get_width()/2-window_mouse_get_x())/360;
    15. }
    16. if(window_mouse_get_x()>(display_get_width()/2+8))
    17. {
    18. Spieler.direction-= drehgeschwindigkeit*(-display_get_width()/2+window_mouse_get_x())/360;
    19. }
    20. display_mouse_set(display_get_width()/2,window_mouse_get_y());
    Alles anzeigen


    so das war ganz schön lang, hoffe das kann jemand für mich testen, da ich momentan keinen GM zur hand habe.

    edit: ich hatte noch ein paar flüchtigkeitsfehler drin, wie z.b. yto = Spieler.x + usw. jetzt müsste es stimmen.

    MfG Genesis

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Genesis ()

  • Vielen Dank für deine Antwort. *Freu*.

    Leider klappt das ganze noch nicht so, wie es sollte.

    Fragen:
    Muss man die d3d_projectoin() nicht in den Draw-Event packen? Bin mir nicht sicher.
    Woher weiss ich "Spieler.r" - also den Radius? Muss ich den im Step-Event vom Spieler herausfinden? => Ich habe vorläufig einfach mal "Spieler.x" bzw. "Spieler.y" genommen.
    Ich schnall das mit dem sinus cosinus und tangens ehrlich gesagt nicht. Ich weiss nur, dass wir das nie durchgenommen hatten und dass man damit irgendwie Winkel ausrechnen kann.
    Soviel ich weiss ist sinus(alpha) immer die Hypothenuse : Gegenkante (oder umgekehrt ^^) und cosinus(alpha) ist gleich die Gegenseite : Hypothenuse (dito) und tangens ist = sinus : cosinus (...).

    Für was ist das überhaupt zu gebrauchen? Diese Angaben nützen doch nur im gleichschenkligen Dreieck, oder irre ich mich. ?(
    Könntest du mir das mal anschaulich erklären? :D

    Ergebins:
    Man sieht Topdown auf den Boden (sollte nicht sein) . Der Cursor ist ganz oben, mittig ausgerichtet. Springt in die Position zurück (muss so sein?)
    Vom Spieler sieht man nix.

    Ich habe die Datei beim 1. Posting nochmals neu hochgeladen.


    Mfg
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • xx-XtremeX-xx schrieb:

    Vielen Dank für deine Antwort. *Freu*.

    Leider klappt das ganze noch nicht so, wie es sollte.

    Fragen:
    Muss man die d3d_projectoin() nicht in den Draw-Event packen? Bin mir nicht sicher.
    Woher weiss ich "Spieler.r" - also den Radius? Muss ich den im Step-Event vom Spieler herausfinden? => Ich habe vorläufig einfach mal "Spieler.x" bzw. "Spieler.y" genommen.

    Spieler.r muss im Create event vom Spieler definiert werden und gibt den abstand den die Kamera vom Spieler weg ist an.

    xx-XtremeX-xx schrieb:


    Ich schnall das mit dem sinus cosinus und tangens ehrlich gesagt nicht. Ich weiss nur, dass wir das nie durchgenommen hatten und dass man damit irgendwie Winkel ausrechnen kann.
    Soviel ich weiss ist sinus(alpha) immer die Hypothenuse : Gegenkante (oder umgekehrt ^^) und cosinus(alpha) ist gleich die Gegenseite : Hypothenuse (dito) und tangens ist = sinus : cosinus (...).

    Für was ist das überhaupt zu gebrauchen? Diese Angaben nützen doch nur im gleichschenkligen Dreieck, oder irre ich mich. ?(
    Könntest du mir das mal anschaulich erklären? :D

    Naja Wenn man die Kreisbahn berechnen will ist das bei Einheitskreisen mit der Formel Möglich(die kamera soll ja hinter dem spieler sein, welcher sich in 3rd Person Perspektive drehen kann),
    eigentlich ist das was ich geschrieben habe nur die Erklärung von der Funktion Lenghtdir.

    hier mal ein Bild von Wikipedia Auf der X Achse siehst du das Cosinus alpha,
    mittels dem winkel und dem radius lässt sich also durch cosinus die X Position in der Kreisbahn bestimmen.
    Das gleiche mit der Y Position für Sinus

    Die Kreisbahn ist "die Linie die den kreisumfang beschreibt" Hier noch ein Bild in dem die Kreisbahn im Koordinatensystem anschaulich darstellt: Auch von Wikipedia

    ich hoffe ich werfe hier nicht grad Begriffe durcheinander, ist schon sehr lang her ...

    xx-XtremeX-xx schrieb:


    Ergebins:
    Man sieht Topdown auf den Boden (sollte nicht sein) . Der Cursor ist ganz oben, mittig ausgerichtet. Springt in die Position zurück (muss so sein?)
    Vom Spieler sieht man nix.

    Ich habe die Datei beim 1. Posting nochmals neu hochgeladen.
    Mfg


    ich seh mir die Datei einfach mal mit dem LGM an vielleicht seh ich ja den Fehler :)

    edit: im create event vom spieler einfach

    GML-Quellcode

    1. obj_player.r = 50;

    mach aus dem Step event der Kamera mal ein Draw event und ersetze das script durch dieses:

    GML-Quellcode

    1. x=obj_player.x+lengthdir_x(obj_player.r,360-obj_player.direction)
    2. y=obj_player.y+lengthdir_y(obj_player.r,360-obj_player.direction)
    3. xto=obj_player.x+lengthdir_x(obj_player.r,obj_player.direction)
    4. yto=obj_player.y+lengthdir_y(obj_player.r,obj_player.direction)
    5. d3d_set_projection(x,y,15+global.camz,xto,yto,15,0,0,1);
    6. if(window_mouse_get_x()<(display_get_width()/2-8))
    7. {
    8. obj_player.direction+= 4*(display_get_width()/2-window_mouse_get_x())/360;
    9. }
    10. if(window_mouse_get_x()>(display_get_width()/2+8))
    11. {
    12. obj_player.direction-= 4*(-display_get_width()/2+window_mouse_get_x())/360;
    13. }
    14. display_mouse_set(display_get_width()/2,mouse_y);
    Alles anzeigen



    MfG Genesis

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Genesis ()

  • Danke für die Antwort.

    Ja, sieht schon besser aus :) aber ist noch nicht das, was ich gerne hätte.
    Vielleicht nochmals, wie es am Schluss aussehen sollte (falls dies Möglich ist):

    obj_player:
    Kann sich in alle Richtungen bewegen. Links: dreht sich nach links, Rechts: dreht sich nach rechts, Oben: gerade aus - kann mit links und rechts die Richtung wechseln- ebenso mit Unten.

    Kamera:
    Die Kamera ist immer hinter dem Spieler - sie steht in einer Linie zum Objekt. Dreht sich das Objekt, so rotiert die Kamera wieder hinter das Objekt. Die Kamera zeigt also immer auf den Rücken.
    Mit der Maus soll es möglich sein, nach links und rechts, bzw. unten + oben zu schauen. Dies geschiet von der Position der Kamera aus.

    So wie es jetzt ist, dreht sich die Kamera, ohne dass der Spieler sich bewegt, im Kreis. Übrigens wenn jeweils 180° überschritten sind (ab 1° und ab 181°) vom Objekt aus gesehen, dreht sich die Kamera um 180° dh. wenn ich von hinten an das Objekt geschaut habe, bin ich plötzlich vor dem Objekt und drehe mich um die Vorderseite.

    Es tönt ein wenig verwirrend. Aber ich hoffe, du hast es verstanden.

    Hier mal die Veranschaulichung (so sollte die Kamera reagieren):


    Zum Bild: Der Spieler dreht sich auf der Stelle, oder während dem gehen in eine andere Richtung. Die Kamera steht in einem gewissen abstand immer dahinter.


    Mfg und Danke nochmals
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Mhh, wie ich schon sagte hab ich(momentan) keinen GM um das zu testen,

    hatte mir schon gedacht das es nicht(perfekt) funktioniert... naja dann hier mal ein verbesserungsversuch:

    GML-Quellcode

    1. x=obj_player.x+lengthdir_x(obj_player.r,(180+obj_player.direction) mod 360)
    2. y=obj_player.y+lengthdir_y(obj_player.r,(180+obj_player.direction) mod 360)
    3. xto=obj_player.x+lengthdir_x(obj_player.r,obj_player.direction)
    4. yto=obj_player.y+lengthdir_y(obj_player.r,obj_player.direction)
    5. d3d_set_projection(x,y,15+global.camz,xto,yto,15,0,0,1);
    6. if(window_mouse_get_x()<(display_get_width()/2-32))
    7. {
    8. obj_player.direction+= 4*(display_get_width()/2-window_mouse_get_x())/360;
    9. }
    10. if(window_mouse_get_x()>(display_get_width()/2+32))
    11. {
    12. obj_player.direction-= 4*(-display_get_width()/2+window_mouse_get_x())/360;
    13. }
    14. display_mouse_set(display_get_width()/2,mouse_y);
    Alles anzeigen

    wenn das nicht hilft kannst du ja mal 2-3 Screenshots machen und hier reinstellen, dann kann ich mir sie Situation besser vorstellen.

    MfG Genesis
  • Okay, ich versuche es mal so.

    Ehm was ist denn mod 360?

    EDIT:
    So sieht es eigentlich gut aus :thumbup: .
    Jetzt habe ich mir überlegt, dass das, was ich vorher gesagt habe nicht ganz richtig war. Es wäre besser, wenn die Maus keinen Einfluss auf die Bewegung des Objektes hätte. Die Kamera bewegt sich aber (wie vorher) im Kreis um das Objekt. Der Kopf der Kammera sollte sich aber immer auf den Mittelpunkt des Objektes (Spieler) fokusieren. Man dreht also mit der Maus um den Spieler, wobei die Kamera immer den Spieler anschaut.

    Ausserdem noch das mit dem hoch/tief schauen. --> Mache ich noch ein Beispiel für.
    Und die Maus sollte, wenn möglich nicht oben, sondern in der Mitte des Bildschirmes zentriert werden.


    Mfg und vielen Dank
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von xx-XtremeX-xx ()

  • Also damit die Kamera keinen einfluss auf die Bewegung des Spielers hat braucht man eine Extra Variable
    Ich nehm einfach die unbenutzte Direction von der Kamera:

    GML-Quellcode

    1. x=obj_player.x+lengthdir_x(obj_player.r,(180+Kamera.direction) mod 360)
    2. y=obj_player.y+lengthdir_y(obj_player.r,(180+Kamera.direction) mod 360)
    3. xto=obj_player.x+lengthdir_x(obj_player.r,Kamera.direction)
    4. yto=obj_player.y+lengthdir_y(obj_player.r,Kamera.direction)
    5. d3d_set_projection(x,y,30+0.5*global.camz,xto,yto,30,0,0,1);
    6. if(window_mouse_get_x()<(display_get_width()/2-32))
    7. {
    8. Kamera.direction+= 4*(display_get_width()/2-window_mouse_get_x())/360;
    9. }
    10. if(window_mouse_get_x()>(display_get_width()/2+32))
    11. {
    12. Kamera.direction-= 4*(-display_get_width()/2+window_mouse_get_x())/360;
    13. }
    14. display_mouse_set(display_get_width()/2,display_get_height()/2);
    Alles anzeigen


    mod ist ein Division Restverfahren, wenn ich 540 mod 360 eingebe werden daraus 180. sobald die Zahl also 360 überschreitet wird ihr 360 abgezogen, das ist damit kein winkel von 400° oder so entsteht(was ja im GM nicht möglich ist, weil der Zähler bei 360 wieder von 0 anfängt)

    damit die Kamera auf den Kopf vom spieler ausgerichtet ist musst du ein wenig mit den Global.camz wert herumprobieren, wenn du einen guten gefunden hast kannst du ihn in das "zto" schreiben

    MfG Genesis
  • Hey, super! Funzt einwandfrei. :D Vielen Dank.
    ...einen hab ich noch ^^.

    Wie kann ich jetzt noch nach oben, bzw. nach unten schauen? Gleich wie beim links, rechts, nur dass ich hier mouse_get_y() verwende, oder?

    Mfg
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • xx-XtremeX-xx schrieb:

    Hey, super! Funzt einwandfrei. :D Vielen Dank.
    ...einen hab ich noch ^^.

    Wie kann ich jetzt noch nach oben, bzw. nach unten schauen? Gleich wie beim links, rechts, nur dass ich hier mouse_get_y() verwende, oder?

    Mfg

    Naja wie gesagt aus Gründen der Einfachheit hab ich das weggelassen,

    füg doch mal den Code am ende ein(vor display_mouse_set() !) :

    GML-Quellcode

    1. if(window_mouse_get_y()<(display_get_height()/2-32))
    2. {
    3. global.camz -= 4;
    4. }
    5. if(window_mouse_get_y()>(display_get_height()/2+32))
    6. {
    7. global.camz += 4;
    8. }

    Ansonsten währe das schwierig einzubauen, so dass die Kamera genau an der Oberfläche der Kugel(das mit dem Radius der Kreisbahn kann man auch in 3D mit einer Kugel machen) entlangläuft.
    Die Formel müsste ich dann auch Suchen.

    Wenn du die Hoch/Runter sicht umkehren willst vertausch einfach das +=4 mit dem -=4 :)

    BTW: um die Entfernung der Kamera zu ändern kannst du in dem Mausrad hoch event

    GML-Quellcode

    1. if(obj_player.r>0)
    2. {
    3. obj_player.r -=10;
    4. }

    und im Mausrad runter

    GML-Quellcode

    1. obj_player.r +=10;


    Wenn du ernsthaft was mit 3D Machen willst solltest du dir vielleicht ein Buch kaufen, Klick das hört sich ganz gut an :) und ja Fachbücher sind teuer ;)
  • Ne, das war leider nicht das, was ich gemeint habe.
    Ich möchte ja nicht die Höhe der Kamera verändern, (das habe ich schon bei mouse_wheel_up und mouse_wheel_down) eingerichtet, sondern den Blickwinkel der Kamera nach oben bzw. nach unten verändern.
    Eigentlich genau gleich wie das mit der vertikalen Sicht - mit der Ausnahme, dass sich diesmal die Kamera nicht wie du gesagt hast in 3D über die Kugel bewegt.

    Es ist eigentlich wie wenn man mit hinter dem Spieler steht und mit dem Kopf nach oben und nach unten schaut.

    Verstehst du, was ich damit meine?
    Das mit der Höhe der Kamera ist ja kein Problem :)

    Mfg
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • so dass die Kamera genau an der Oberfläche der Kugel(das mit dem Radius der Kreisbahn kann man auch in 3D mit einer Kugel machen) entlangläuft.

    Eben, das möchte ich ja gar nicht.

    Es soll ja nicht genau an der Oberfläche entlanglaufen, sondern nur hoch/runter von einer 3. Person aus gesehen.
    Ich versuche das mal umzusetzen, ansonsten kann ich ja nochmals schreiben.

    Mfg
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!
  • Super! Vielen Dank, es funzt. Jetzt weiss ich auch endlich was mit xto, yto, zto gemeint war :D .

    Musste das ganze noch ein bisschen umbauen dh. Bewegungen schneller, oder fliessender darstellen :).
    Ich habe das ganze so gelöst:

    GML-Quellcode

    1. x=obj_player.x+lengthdir_x(global.radius,(180+camera.direction) mod 360)
    2. y=obj_player.y+lengthdir_y(global.radius,(180+camera.direction) mod 360)
    3. xto=obj_player.x+lengthdir_x(global.radius,camera.direction)
    4. yto=obj_player.y+lengthdir_y(global.radius,camera.direction)
    5. d3d_set_projection(x,y,global.camz,xto,yto,global.camz+global.pitch,0,0,1)
    6. if(window_mouse_get_x()<(display_get_width()/2-16))
    7. {
    8. global.block_pitch = 1
    9. if(global.block_change_dir = 0)
    10. {
    11. camera.direction+= 64*(display_get_width()/2-window_mouse_get_x())/360
    12. }
    13. }
    14. if(window_mouse_get_x()>(display_get_width()/2+16))
    15. {
    16. global.block_pitch = 1
    17. if(global.block_change_dir = 0)
    18. {
    19. camera.direction-= 64*(-display_get_width()/2+window_mouse_get_x())/360
    20. }
    21. }
    22. if(window_mouse_get_y()<(display_get_height()/2-4))
    23. {
    24. global.block_change_dir = 1
    25. if(global.pitch > -360 && global.pitch <= 360 && global.block_pitch = 0)
    26. {
    27. global.pitch -= 1
    28. }
    29. }
    30. if(window_mouse_get_y()>(display_get_height()/2+4))
    31. {
    32. global.block_change_dir = 1
    33. if(global.pitch >= -360 && global.pitch < 360 && global.block_pitch = 0)
    34. {
    35. global.pitch += 1
    36. }
    37. }
    38. display_mouse_set(display_get_width()/2,display_get_height()/2)
    39. global.block_change_dir = 0
    40. global.block_pitch = 0
    Alles anzeigen


    Wie du siehst, habe ich noch versucht zu verhindern, dass man gleichzeitig nach links bzw. rechts und hoch und tief schauen kann.
    Ich habe einfach für den Horizontalen und Vertiklen-Teil je eine Variable definiert, die dann nach dem Drehmoment des anderen wieder zurücksringt.

    Es geht zwar etwas einfacher zu steuern, perfekt ist es aber bei weitem nicht. Vielleicht kannst du mir hier als letztes noch sagen, wie ich das schöner lösen kann.

    Ich hätte da noch eine etwas unschönere Methode:
    Ich bestimme einfach, dass wenn man nach rechts oder links drehen will, z.B. die linke Maustaste gedrückt halten muss, für hoch/runter dann mit der rechten Maustaste.
    Das könnte ich mit

    GML-Quellcode

    1. mouse_check_button_pressed(mb_left) und mouse_check_button_pressed(mb_right)
    lösen.

    Mfg vielen Dank nochmals :thumbsup:
    Das Problem zu erkennen ist wichtiger,
    als die Lösung zu erkennen,
    denn die genaue Darstellung des Problems führt zur Lösung.
    ( Albert Einstein )


    I am an according to the gml n00b test!