Probleme bei 2D Shooter mit den Kugeln der Waffe

  • GM 8

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

  • Probleme bei 2D Shooter mit den Kugeln der Waffe

    Einen wunderschönen guten Tag liebe GM-Community!
    Ich arbeite seit 4 Tagen mit GM und bin gerade dabei ein sehr simples Spiel zu erstellen bei dem man in einer 2D Umgebung herumrennen kann ( nach links und rechts) und dabei schiessen kann.
    Nun bin ich aber leider auf ein Problem gestoßen und zwar:
    ich bin mittlerweile in der Lage zu schiessen aber leider habe ich das problem, dass die Kugeln ihre Richtung ändern wenn ich mich bewege.
    Woran liegt das?

    Ich hab das ganze folgendermaßen programmiert

    Ich habe ein Objekt Namens Char mit einem :event_create: darin habe ich verschiedene Variabeln unter anderem die Variabel: global.richtung = 0;
    diese Variabel änder ich wenn ich auf dem Steuerpad nach Links oder Rechts gehe; wenn ich nach Rechts gehe wird diese auf 1 gesetzt und wenn ich nach links gehe, wird diese auf 0 gesetzt. Warum ich das so gemacht habe? Damit die Kugeln immer wissen in welche Richtung sie fliegen müssen.

    In dem :event_step: von dem Char habe ich folgendes eingegeben

    GML-Quellcode

    1. if (gamepad_button_check_pressed(varPlayer, gp_face2))
    2. {
    3. instance_create(x,y,object1) <--- das ist die Kugel !
    4. }


    Und die Kugel wiederum hat folgende Befehle ein :event_step:
    mit folgendem Code:

    GML-Quellcode

    1. if ( global.richtung=1)
    2. {
    3. other.x+=8;
    4. }
    5. if (global.richtung=0)
    6. {
    7. other.x-=8;
    8. }
    Alles anzeigen


    Nun habe ich das Problem wenn ich Kugeln abschiesse und diese bereits in der Luft sind & ich mich mit dem Charakter bewege, ändern die Kugeln ihre Richtung und behalten nicht die Richtung bei welche sie hatten als sie erstellt worden.
    Frage: Wie bekomme ich diesen Fehler nun behoben? Bzw. wie bekomme ich die Instanzen nun seperiert und "gelockt" sodass sie ihre Variabeln nichtmehr ändern?


    danke im Vorraus & liebe Grüße,

    ice21
  • Das liegt daran dass du global.richtung als Spieler veränderst und die Kugel ja je step abfragen ob hlobal.richtung 1 oder 0 ist.

    Pack den Code lieber ins Create Event von den Kugel und setze hspeed entweder auf 8 oder -8 dann bewegen sie sich immer weiter in die selbe richtung auch wenn char woanders hinrennt :)

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)
  • Vielen Dank fuer die schnelle Antwort. :) Ich bin gerade unterwegs und werde es nachher mal probieren. Hab ich dich richtig verstanden, dass ich den Code vom Char nicht aendern muss und ledigdlich ein Create Event zur Kugel hinzufuege mit dem: if (global.richtung.... Etc. )?Wenn ja, was macht das genau in Verbindung mit einer Instanz? Hat jede Kugel praktisch ihre eigene seperate Richtungs Variabel? LG / sorry fuer die RS .. bin mit dem Handy online!
  • Nein, nein, die Kugeln benützen die Variable vom Char/bzw eigtl die globale variable global.richtung NUR wenn sie erstellt werden um einmalig festzulegen in welche Richtung sie müssen. Das Step Event kannst du getrost löschen und char bleibt wie er ist.
    Der einzige Code den die Kugeln brauchen ist im Create Event:

    GML-Quellcode

    1. if global.richtung = 1//ich nehm grad einfach an dass das rechts is^^
    2. {
    3. hspeed = 8 //nach rechts fliegen
    4. }
    5. if global.richtung = 0
    6. {
    7. hspeed = -8 //nach links fliegen
    8. }


    Da alle Objekte auf global.variablen zugreifen können, musst du aufpassen, in welchen Event sie das ohne bugs zu erzeugen können und wo es sich vielleicht auszahlt Ihnen lieber eine lokale Variable zu geben die dann nur im Create Event von der global.variabel auf 0 oder 1 gesetzt wird und sich später nach anderen eigenen Kriterien ändern kann.

    ancient-pixel.com
    youtube.com/user/SebastianMerkl <<< ich freu mich über einen Besuch ;)