Instance fertig animieren lassen

  • GM 8

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

  • Instance fertig animieren lassen

    Hey leute bin ein totaler anfänger. Hätte eine frage, undzwar versuche ich grad ein jump&run hinzubekommen. Jedesmal wenn ich meinen Player steht und er einen schlag ausführt dann wechelt er auch in den Schlag instance ganz normal, doch wenn ich in einer lauf animation bin (auch eine instance) und dann den schlag ausführe und weiter hin die lauf taste gedrückt halte, dann wird die schlag animation nicht komplett ausgeführt.
    Also was ich versuche hinzubekommen ist das meine schlag animation komplett ausgeführt wird, egal ob er steht,rennt, springt oder sonnst was.

    Danke im voraus

    P.S. ich bin ein totaler anfänger also bitte für den Dau erklären
  • Hallo Iboshido,

    grundsätzlich kann ich dir von Zwischenanimationen aus eigener Erfahrung abraten. Ein, höchstens zwei Zwischenbilder sind meiner Meinung nach das Maximum. Das, was du willst, macht aus einer direkten Steuerung eine indirekte und das kommt nur selten gut an, weil man das Gefühl hat nicht mehr die Kontrolle über die Figur zu haben. Wie gesagt, ich spreche das aus eigener Erfahrung und habe es bitter bereut. Selbst eine halbe Sekunde fühlt sich wie eine Ewigkeit an, wenn man von Feinden umringt darauf wartet, dass die Animation zu Ende geht.

    Zur Technik: was du suchst ist das letzte Sprite deiner Animation. Erst wenn dieses Sprite erreicht ist, kann es weiter gehen. Abgefragt wird es mit image_index. Zitat aus der Hilfe:
    Wenn ein sprite aus einer Bildfolge besteht, wird diese zyklisch wiederholt. Diese Variable zeigt das momentan dargestellte Bild der Bildfolge an (Nummerierung beginnt bei 0). Du kannst das momentan angezeigte Bild ändern, indem du den Wert dieser Variablen änderst. Das Programm setzt, beginnend mit dem angegebenem Bild, die zyklische Wiederholung fort.
    Angenommen, du machst für jede Bewegung ein eigenes Objekt (brauchst du eigentlich nicht) und deine Animation hat 30 Frames. Ich würde eine globale Variable einrichten, die besagt, ob die Steuerung blockiert wird oder nicht. Zum Beispiel global.stblock
    Dann musst du beim Beginn der Animation die Variable auf true setzen, also:

    GML-Quellcode

    1. global.stblock = true;


    Dort, wo die Steuerung abgefragt wird, musst du nun eine Abfrage einbauen, welche die Variable prüft.

    GML-Quellcode

    1. if global.stblock = false{
    2. // blablabla
    3. }


    Nun geht es darum was passiert, wenn die Animation schlagen läuft. Die Variable wird wie oben auf true gesetzt, nun geht es darum das letzte Bild zu prüfen und die Variable um zu schalten. Angenommen, deine Animation hat 30 Frames:

    GML-Quellcode

    1. if image_index >= 30 {
    2. global.stblock = false;
    3. // ...weitere Befehle, etwa das die Instanz zerstört wird
    4. }


    Hoffe es hilft etwas weiter. :D
  • Dann wird es Zeit. :D

    Was ich geschrieben habe, funktioniert natürlich auch mit D&D Symbolen, nur fand ich das GML zum schreiben schneller.

    :action_ifvariable: damit prüfst du die Variablen, also als Ersatz für das "if ..." von oben. Mehr brauchst du eigentlich nicht, wobei ich gerne :action_begin: und :action_end: benutze, damit es übersichtlicher wird. Also eine komplette Abfrage wäre dann

    :action_ifvariable:
    :action_begin:
    :action_variable: zum setzen der Variable.
    :action_end: