Es gibt zwei Möglichkeiten, Modell- oder Spriteentities zu animieren. Besteht die Entity aus mehreren Frames, hat aber keine angehängte Aktion, laufen alle Frames nacheinander mit einer Geschwindigkeit von 8 Frames pro Sekunde bei Modellen und 12 Frames pro Sekunde bei Sprites ab. Ist eine Aktion angehängt, wird sie nicht selbständig animiert. Statt dessen gibt ihr frame-Wert (1...Anzahl von Frames) die Nummer des aktuellen Frames wieder. Das Modell kann also animiert werden, indem man permanent time_step zu dem frame Parameter hinzuzählt.
Für ein sich gehend fortbewegendes Modell kann man alternativ statt eines Zeitfaktors die überbrückte Distanz zu frame hinzuaddieren. Ist der frame-Parameter nicht ganzzahlig, wird die Form der Model-Entity gemäß dem Nachkomma-Anteil zwischen frame und next_frame interpoliert. Ist next_frame 0, erfolgt die Interpolation zwischen frame und frame+1. Auf diese Weise kann ein Modell stufenlos zwischen beliebigen Animationsframes 'gemorpht' werden.
Normalerweise wird eine Modell-Entity aber mit der ent_animate Anweisungen animiert.
my.frame += 1.5*time_step; // gibt 16/1.5 = 12 Frames pro Sekunde my.frame %= 10; // nicht die maximale Framezahl überschreiten
Beispiel für eine Funktions-Schleife, die per next_frame ein Modell stufenlos zwischen den Frames 20 und 30 animiert:
my.frame = 20; // start-frame while (1) { my.frame += time_step; // 16 frames pro sekunde if (my.frame> 30) { my.next_frame = 20; } // interpoliere nach start frame else { my.next_frame = 0; } // interpoliere nach frame+1 if (my.frame >= 31) { my.frame -= 10; } // end-frame erreicht wait(1); }