Bestimmte Anzahl an gegner Spawnen

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

  • Bestimmte Anzahl an gegner Spawnen

    Hallo liebe GM Community,

    Ich würde gerne meine Gegner spawnen... hört sich jetzt nicht schwer an aber sie verdoppeln sich immer wieder und hören nicht mehr auf zu spawnen.
    Ich habe jetzt mehreres versucht aber komme nicht auf vernüntiges Ergebnis. Ich will 4 Gegner in gleichen Zeitabständen spawnen lassen. Wenn die 4 Gegner existieren soll keinen weiteren mehr gespawnt werden bis wieder ein Gegner zerstört ist.

    Create event

    GML-Quellcode

    1. menge = 0; // die Menge der Gegner


    Step event

    GML-Quellcode

    1. if menge <= 4 && !alarm[0]
    2. {
    3. alarm[0] = 120;
    4. }


    Alarm Event

    GML-Quellcode

    1. gegner = instance_create(1400,random(room_height - 500),obj_normal_gegner);
    2. menge += 1;


    Ich weiß nicht was ich falsch gemacht habe, kann mir jemand eine Lösung geben und sie mir erklären?
    Für jene, die ständig das Scheitern fürchten, sind Erfolge auf ewig unerreichbar.
  • Zu deinem Problem:
    Wie der Vorposter schon sagte, kannst du das leichter mit Instance Number regeln. Wenn du allerdings lieber deine Variablen-Methode verwenden willst, dann darfst du das nicht im Step-Event ausführen, denn so ruft er immer und immer wieder auf das Alarm Event zu und fängt soweit ich weiß immer von vorne an.

    Wenn du es so regeln willst, musst du es so machen:

    Create Event:

    GML-Quellcode

    1. menge = 0;
    2. alarm[0] = 120;


    Alarm[0] Event: (Wenn nur maximal 4 gespawnt werden sollen und das nur 1x)

    GML-Quellcode

    1. if (menge <4) {
    2. gegner = instance_create(1400,random(room_height - 500),obj_normal_gegner);
    3. menge += 1;
    4. alarm[0]=120;
    5. }



    Alarm[0] Event: (Wenn nur maximal 4 gespawnt werden sollen es immer wieder nachschub geben soll, sobald es weniger als 4 sind)

    GML-Quellcode

    1. if (menge <4) {
    2. gegner = instance_create(1400,random(room_height - 500),obj_normal_gegner);
    3. menge += 1;
    4. }
    5. alarm[0]=120;


    Das zweite wäre dann, dass dieses "<=" falsch ist, wenns nur 4 sein sollen. Entweder du schreibst <4, <=3 oder !=4.
    Menge | Objekte
    0 | +1 | 1
    1 | +1 | 2
    2 | +1 | 3
    3 | +1 | 4
    4 | +1 | 5

    So würden 5 anstatt deine gewünschten 4 erstellt werden!

    Instance_Number-Methode:

    Create Event:

    GML-Quellcode

    1. alarm[0] = 120;


    Alarm[0] Event:

    GML-Quellcode

    1. if (instance_number(obj_normal_gegner)<4 {
    2. gegner = instance_create(1400,random(room_height - 500),obj_normal_gegner);
    3. alarm[0] = 120;
    4. }


    Liebe Grüße
    Killian

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von icqgamer ()

  • Ja, an die Funktion instance_number habe ich auch schon gedacht. ^^
    Nach meiner Methode sollte aber theoretisch das mit dem Alarm[0] event funktionieren. Da die zwei Bedingungen stimmen. Die Abfrage ist ja ob "menge" kleiner als 4 ist und alarm[0] nicht ausgeführt wird. Beide Bedingungen sind wahr und der alarm[0] wird ausgeführt.
    Und ich weiß das ein alarm auch im step event funktioniert weil ich es schon einmal erfolgreich verbaut habe. :)

    Was mich noch gewundert hat, ist das sich das "obj_gegner" nach jeder Ausführung des alarm´s verdoppelt hat und die "menge" sich anscheinend gar nicht vergrößert hat?

    Ansich bin ich euch dankbar und bin auch ziemlich sicher das euer Code funktioniert aber ich verstehe noch nicht meine Fehler. Da ich so einen ähnlichen Code schon mal verbaut habe?
    Für jene, die ständig das Scheitern fürchten, sind Erfolge auf ewig unerreichbar.
  • Was mich noch gewundert hat, ist das sich das "obj_gegner" nach jeder Ausführung des alarm´s verdoppelt hat und die "menge" sich anscheinend gar nicht vergrößert hat?


    Hast du den Quellcode den du gepostet hast den in den Gegnern selber verbaut? Wenn das der Fall ist, hat ja jeder neu gespawnte Gegner den Wert menge=0 und spawnt für sich selber neue Gegner. Du müsstest also aus der Variable menge eine globale Varibale global.menge machen, damit nicht jeder Gegner, der gerade gespawnt ist, mit menge=0 anfängt.