Lightning und Laser Tutorial

    • GM 8

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

    • Lightning und Laser Tutorial

      Hallo fröhliche Bande.

      Hier, wie versprochen das Lightning und Laser Tutorial. Mal vorweg, ihr braucht dafür GM8.1 und zwar die registrierte Version, da dieses Tutorial draw_sprite_general benötigt, welche nur in der registrierten Version benutzbar ist.

      Also, worum gehts. Im Endeffekt geht es darum, einen Effekt zu erzeugen, welcher unabhängig von der Länge immer abgeschlossen wirkt, z.b. ein Blitz, der von einen Magier abgefeuert wird, und an eine Wand oder ein Monster prallt, bzw. ein Laser, welcher von einem Raumschiff abgefeuert wird. Ich benutze hierfür zwei verschiedene Graphiken: Eine Effekt Graphik um den Laser oder Blitz darzustellen und eine Treffer Graphik um zu überdecken, wo der Effekt abgeschnitten wird.



      Wichtig ist, das man bevor man den Effekt zeichnet, die Origin Koordinaten des Effekts als Winkel und Länge abzulegen. Das erscheint jetzt noch nicht wichtig, aber die funktion draw_sprite_general zeichnet ein Sprite nicht an seiner Origin Koordinate sondern immer Oben links, so das diese im Nachhinein noch dazu gerechnet werden muss. Das Ganze läuft wie folgt:

      GML-Quellcode

      1. OAngle = point_direction(0,0,sprite_get_xoffset(SPR_Lightning),sprite_get_yoffset(SPR_Lightning));
      2. OLength = point_distance(0,0,sprite_get_xoffset(SPR_Lightning),sprite_get_yoffset(SPR_Lightning));


      Kann man so z.b. ins Create Event von dem Angriff geben.

      Dann muss man herausfinden, wie weit der Angriff geht, dazu gibt es verschiedene Ansätze, sollte jeder am besten so machen wie man selbst will. Ihr dürft meinen eher fragwürdigen Ansatz gerne aus der Projektdatei übernehmen.

      im Draw Event des Angriffs geht man dann wie folgt vor:

      GML-Quellcode

      1. ox = lengthdir_x(OLength,Angle+OAngle);
      2. oy = lengthdir_y(OLength,Angle+OAngle);
      3. draw_set_blend_mode(bm_add);
      4. draw_sprite_general(SPR_Lightning,-1,0,0,MaxLength-12,64,Start_X-ox,Start_Y-oy,1,1,Angle,c_white,c_white,c_white,c_white,1);
      5. draw_sprite_ext(SPR_Hit,-1,End_X,End_Y,1,1,Angle,c_white,1);
      6. draw_set_blend_mode(bm_normal);


      Start_X und Start_Y sind der Ursprung des Angriffs, End_X und End_Y der Treffer Punkt des Angriffs. Angle ist der Winkel, lässt sich leicht mit point_direction zwischen Start und Endpunkt feststellen. ox und oy sind die neu errechneten Origin Koordinaten, damit der Angriff auch richtig dargestellt wird.
      Dateien
      • lightning_fx.zip

        (69,94 kB, 323 mal heruntergeladen, zuletzt: )
      ...
    • Theoretisch würde es auch mit Surfaces Funktionieren, aber auch dafür benötigt man ... die Standard Version. Wenn du statt 2 Graphiken (Start+Effekt, Treffer) 3 Graphiken benutzt (Start, Effekt, Treffer) könnte es eventuell auch mit draw_sprite_ext funktionieren, wird aber etwas seltsam aussehen, weil die Graphik dann einfach nur skaliert wird. Muss ich mir bei Gelegenheit genauer ansehen.
      ...
    • Benutzer online 1

      1 Besucher