Name Von
Dynamisches Charakterblinzeln (Animation, Lua) AFRLme

Dieses Tutorial zeigt dir, wie deine Charaktere mit ein paar If-Abfragen und etwas Lua dynamisch blinzeln, indem du festlegst, welche Frames einer Animation gezeigt werden. Es behandelt nur die Grundlagen, also eine Blinzel-Animation in den Idle-Animationen. Mit derselben Methode kannst du Blinzel-Animationen aber genauso gut an jeder anderen Stelle einbauen, indem du abfragst, welche Frames gespielt oder übersprungen werden.


Zuerst habe ich die Blinzel-Animation ans Ende jeder Idle-Animation gehängt, dann den ersten Frame jeder Idle-Animation bearbeitet und dort einen Aktionsteil Skript ausführen angelegt mit ...

if math.random(20) < 13 then
 ActiveAnimations["animation_name"].AnimationLastFrame = 16
else
 ActiveAnimations["animation_name"].AnimationLastFrame = 21
end

"animation_name" steht für den Namen der Animation (im Codeblock habe ich einen allgemeinen Namen eingesetzt). Die Zahlen sind die Anzahl der Frames ohne und mit dem Blinzel-Teil. In diesem Fall waren die Frames 1 bis 16 der Idle-Teil und die Frames 17 bis 21 der Blinzel-Teil.

Das kleine Skript erzeugt eine Zufallszahl zwischen 1 und 20. Ist sie kleiner als 13, wird nur der Idle-Teil gespielt, bei 13 oder mehr zuerst der Idle-Teil und dann das Blinzeln. Der Charakter blinzelt also am Ende jedes Durchlaufs der Idle-Animation mit einer Wahrscheinlichkeit von 7 zu 20.

Ganz einfach, oder?

Kurzer Hinweis: In Visionaire Studio legst du mit AnimationFirstFrame und AnimationLastFrame fest, welche Frames einer Animation gespielt werden.

Blink screen code.png


Das Prinzip ist dasselbe wie in Tutorial 1, nur hängen wir diesmal weitere Frames ans Ende der Animation, damit der Charakter zweimal blinzelt. Alternativ könnte man auch einen Wert verwenden, nur die Blinzel-Frames abspielen und den Wert hoch- oder herunterzählen, bis er 0 ist, und dann zum ersten Frame zurückspringen. Wenn ich so darüber nachdenke, wäre das sogar die bessere Methode, weil du damit frei bestimmen kannst, wie oft der Charakter hintereinander blinzelt. Darauf gehen wir aber ein andermal ein.

Häng also wieder genug Blinzel-Frames ans Ende jeder Idle-Animation, damit der Charakter zweimal hintereinander blinzeln kann. Bearbeite dann den ersten Frame und lege im Aktionsbereich dieses Frames einen Aktionsteil Skript ausführen an, etwa mit ...

blink = math.random(60)

if blink < 40 then
 ActiveAnimations["animation_name"].AnimationLastFrame = 16 -- no blink
elseif blink >= 40 and < 50 then
 ActiveAnimations["animation_name"].AnimationLastFrame = 21 -- single blink
else
 ActiveAnimations["animation_name"].AnimationLastFrame = 27 -- double blink
end

... auch hier ersetzt du "animation_name" durch den tatsächlichen Namen der Animation, in die du das Skript eingefügt hast, und die Werte für AnimationLastFrame müssen der Anzahl der Frames für Idle, einmal Blinzeln und insgesamt entsprechen. Achte darauf, dass bei Animationsnamen die Groß-/Kleinschreibung zählt.

Ressourcen

Name Beschreibung
- N/A