Space Invaders bewegungen

  • GM 8
  • Space Invaders bewegungen

    Hallo liebe User!

    und zwar möchte ich ein Space Invaders ähnliches Spiel fürs Handy programmieren.
    Nun habe ich ein paar fragen da ich leider nicht weiß wie ich das angehen soll.

    Frage 1: Die Bewegung von den Gegnern. Sie sollen immer pro sekunde zB x +10 nach rechts gehen und wenn sie rechts am rand sind sollen alle y + 20.

    Frage 2: Das Player_obj soll in gewissen zeitabständen immer ein schuss abgeben zB jede 2-3 Sekunden.

    Frage 3: Wie passe ich die room Auflösung immer automatisch bei den verschiedenen Handy Auflösungen an?

    Frage 4: Wie kann ich unterscheiden das wenn zB Gegner_Typ_1 getroffen wird nur er zerstört wird und nicht alle anderen auch die genau die selben sind.

    Frage 5: Random Schuss von Gegnern einstellen.

    Wenn jemand bei einer Frage von den oben genannten helfen kann wäre ich sehr dankbar :)
  • Die einzige Frage, die ich hier als Frage identifizieren kann ist Frage nummer 3. Und dazu gibts schon einige Beiträge hier im Forum.

    Antwort 1: mit

    GML-Quellcode

    1. if (x == 640)
    2. {
    3. global.rechts = 0;
    4. with (parent_invader)
    5. {
    6. y += 20;
    7. }
    8. }

    oder du rechnest dir aus wie lang es dauert bis eine Reihe an Invadern von links nach rechts (in Formation) braucht bei einem speed von 10/pro sekunde (kommt auf deinen Roomspeed an) und stellst dann automatisch die Variable rechts um die alle Invader veranlasst, wieder nach links zu wandern und wenn sich diese Variable ändert rutschen alle um 20 nach unten. Dazu kannst du ein parent objekt einstellen, wenn dieses objekt manipuliert wird, werden alle objekte die es als parent haben ebenso manipuliert.

    Frage 2: Durch den Roomspeed weißt du wielang eine Sekunde im Spiel dauert, standartmäßig also 30 steps, du kannst zB ein Alarmevent stellen, dass sich am Ende immer wieder auf alarm[] = 30; stellt und genau dann eine bewegung bzw einen Schuss zulassen. Oder du fragst im Step Event ab ob sich der Wert eines Counters restlos durch den Roomspeed teilen lässt, und weißt dann das gerade eine sekunde um ist. (modulo (countermod(room_speed)) )

    Frage 4: Durch das Kolllisions event im gegner und instance_destroy();

    Frage 5: mit random(zahl) und anderen randomfunktionen, kannst du zB wieder durch einen Alarm (alarm[0] = random(500))) etwas passieren lassen wenn der Alarm ausgelöst wird.


    Vielleicht noch zur Frage 1: Die Invader werden sich ja nie von einem Raum ende zum anderen bewegen, also kannst du den startpunkt als startx abspeichern. Und einen Umkehrpunkt, wenn dieser erreucht wird, gehts in die andere Richtung.

    GML-Quellcode

    1. rechts = 1;
    2. startx = x;
    3. umkehrx = x+50;

    GML-Quellcode

    1. if (rechts == 1 && x == umkehrx)
    2. {
    3. rechts = 0;
    4. y += 20;
    5. }
    6. if (rechts == 1 && x != umkehrx)
    7. {
    8. x += 10;
    9. }
    10. //und dasselbe mit if rechts == 0 und startx genauso

    out now: KNOSSOS auf itch.io
    ancient-pixel.com <<< ich freue mich über einen Besuch! ^^
  • Benutzer online 1

    1 Besucher