Eigene Raumübergänge

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

    • Eigene Raumübergänge

      Wer sich schon mal die Frage gestellt hat, wie z.B das mitgelieferte Extentionpackage "Room transitions" funktioniert, der war nicht der einzige, der das tat. Ich habe mir das genauer angeguckt, und will euch jetzt mal zeigen, wie das geht.

      Also, generell muss man wissen, dass es nicht direkt eine Funktion zum erstellen von Übergängen gibt. Auf die Funktion transition_define() werde ich noch mal zurück kehren.
      Da man uns so viele Möglichkeiten wie nur möglich geben will, um unsere eigene Effekte zu basteln, kann man Scripte machen, die später als Übergang definiert werden.
      So ein Script ist nicht irgendein Script. Dieser Script ist auch nicht dafür gedacht, dass du ihn aufrufst. Dies macht der GM für dich. Doch wie?

      Beim definieren mit

      GML-Quellcode

      1. transition_define(kind,name)
      wird in name der Name deines Übergangsscriptes als String angegeben. Der GM führt den dann bei jedem Übergang aus.
      Doch wie sieht so ein Übergangsscript aus?

      Der Game Maker führt deinen Script mit seinen Argumenten aus. Welche Argumente dies sind, verrät nicht mal die Dokumentation. Nach ein bisschen suchen habe ich dann diese Arugmente gefunden.
      Also, wenn der GM deinen Script ausfürht, fürht er ihn mit diesen Argumenten aus

      Quellcode

      1. argument0; // Surface mit einem Bild vom vorherigen raum
      2. argument1; // Surface mit dem Bild des nächsten raumes
      3. argument2; // die weite ..
      4. argument3; // .. und breite der Surface
      5. argument4; // die Fraktion des überganges (die fortgeschrittenheit von 0 bis 1)


      Damit kann man schon so einiges anstellen. Argument 0 und 1 sind ids von Surfaces, 0 von dem vorherigen Raum, 1 vom nächsten. 2 und 3 die Maße. 4 ist der Fortschritt des Überganges, von 0 bis 1.

      Jetzt können wir unseren eigenen Effekt machen. Dazu muss mal noch wissen, dass dein Script auch draw'ende Funktionen nimmt. Dies ist auch irgendwo logisch, denn wir müssen ja was drawen, sonst sitzt man vor einem schwarzen Bildschirm.

      Zum warm werden nehmen wir einen einfachen Fadeeffekt. D.h, dass der alte Raum (argument0) im Hintergrund gezeichnet wird, und davor, mit steigender Alpha der neue.
      Das sieht dann so aus:

      GML-Quellcode

      1. draw_surface(argument0, 0, 0); // ein mal für den hintergrund
      2. draw_surface_ext(argument1, 0, 0, 1, 1, 0, -1, argument4); // und dann den neuen mit dem steigendem alpha


      Danach müssen wir diesen Script als Übergang definieren. Das macht man mit der bereits angesprochenden, folgenden Funktion.

      GML-Quellcode

      1. transition_define(42, "scr_trans_fade");
      Dabei ist 42 die Nummer die der Übergang bekommt, und man später in transition_kind nutzt. "scr_trans_fade" ist ein String mit dem Namen unserer Funktion. Diese muss ohne () angegeben werden!

      So, das wars eigentlich auch schon. Beigelegt ist eine gmk, mit ein paar Beispielübergängen. Ich hoffe natürlich auf Kritik und vielleicht auch ein paar Kreationen von euch!

      EDIT: zahlendreher gefixed, danke MeRobin

      MfG SDX
      Dateien

      Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von SDX ()

    • Cool :)

      Was für Argumente man braucht steht doch in der Hilfe (aber warscheinlich nur in GM 8 xD)
      Trotzdem ein sehr nettes Tut :)

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer ()

    • RE: Eigene Raumübergänge

      Super Tutorial. :] Nur eine Sache noch. Sollte die rote 4 nicht eine 3 sein?

      SDX schrieb:

      Damit kann man schon so einiges anstellen. Argument 0 und 1 sind ids von Surfaces, 0 von dem vorherigen Raum, 1 vom nächsten. 2 und 4 die Maße. 4 ist der Fortschritt des Überganges, von 0 bis 1.