Ablauf einer Schleife verzögern?

  • GM 8

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

  • Ablauf einer Schleife verzögern?

    [video]http://www.youtube.com/watch?v=FYCdWyp0QWQ[/video]


    GML-Quellcode

    1. // Waffe (rundum feuer)
    2. if keyboard_check (vk_space) and s_waffe_1 <= 0 and energie >= s_waffe_1_energie and s_waffe_1_ok = 1 //Die ganzen nutzlose Bedingungen zum abfeuern
    3. {
    4. s_waffe_1 = s_waffe_1_frate ; // feuerrate
    5. energie -= s_waffe_1_energie ; // Energieverbrauch
    6. i3 = 0 //der Direktion Grundwert
    7. for (i=0 ; i<360 ; i+=1) { // die schleife
    8. i2 = instance_create(x,y,obj_s_waffe_1);// die Instanz die entsteht
    9. i2.direction = i3 ; // die Direktion abhängig von i3
    10. i2.speed = s_waffe_1_speed ; // Geschwindigkeit der Waffe
    11. i3 += 1 ; // und der Direktion modifizier er
    12. }
    13. }
    14. s_waffe_1 -=1 ;
    Alles anzeigen


    Ich schonwieder habe jetzt schon einiges von dem was ich für mein Spiel brauche zusammen hier nun ein GML Code den ich so verwenden kann aber ich wollte einen besseren Effekt haben

    Mit diesen Code wird ein Ring mit Kugeln um mein Schiff erzeugt indem 360 Geschoße gleichzeitig in alle Richtungen geschossen werden ich möchte aber dass die Kugeln nacheinander geschossen werden also mit einer geringfügigen Verzögerung ist das möglich und wenn wie für Hilfe wäre ich wieder einmal dankbar hoffe das ist nicht wieder so eine anfängerfrage wie die letzten 2.
  • Den Ablauf der Schleife kannst du nicht verzögern, nein. Aber du musst das Ganze ja nicht in eine Schleife stecken.

    GML-Quellcode

    1. timer+=1;
    2. if (timer mod fire_rate == 0){ // Das hier trifft genau alle fire_rate steps zu - genauer gesagt:
    3. // timer wird ganzzahlig durch fire_rate geteilt. Das Ergebnis ist der Rest dieser Division.
    4. // Wie in der Grundschule, schriftliches Teilen. Du erinnerst dich? ;)
    5. i=instance_create(x,y,bullet);
    6. i.direction=i3;
    7. i.speed=2;
    8. i3+=1;
    9. }


    Dieses Stück Code erzeugt bei gedrückt gehaltener Feuertaste einen ziemlich tödlichen Kugelschwall. Du musst den dann nur noch nach 360 erzeugten Kugeln abbrechen - aber das ist dann ja die leichtere Übung. ^^
  • jlsnews schrieb:

    sleep(millisec) oder alarm[0...11]
    sleep friert das ganze Spiel ein, bringt also nichts. Mit einem alarm wirds auch schwer umzugehen da man ja dann ein neuen Ereignis hat. Ich würds wie Irrenhaus3 versuchen ;) Grundlegend ist das die Möglichkeit einen Wartebefehl einzufügen ohne das ganze Spiel auszubremsen, indem immer +1 auf eine Variable hinzugefügt wird, je nach RoomSpeed erreicht diese nach einer gewissen Zeit einen bestimmten Wert und die Schleife wird gebrochen (hier ist es ein if Befehl statt Schleife).