Anim_Linear

Kategorie: Animationen
Ab Engineversion: 1.0 OC

Beschreibung

Der Wert nimmt linear mit der Zeit (in Frames) zu oder ab (je nachdem ob end größer oder kleiner als begin ist). Anfangs beträgt der Wert position und läuft dann Richtung end. Ein Durchgang von begin bis nach end dauert length Frames. Wenn position von begin abweicht dann wird end bereits früher erreicht sein. on_ending bestimmt, was passiert, wenn das Ende erreicht ist.

Syntax

array Anim_Linear(int position, int begin, int end, int length, int on_ending);

Parameter

position:
Startwert. Sollte innerhalb des von begin und end aufgespannten Intervalls liegen.
begin:
Beginn des Intervalls.
end:
Schluss des Intervalls. Wenn end größer als begin ist, so steigt der Wert mit der Zeit an, andernfalls nimmt er ab.
length:
Anzahl Frames die ein Durchspielen von begin bis end dauert.
on_ending:
Specifies what happens once end is reached. There are the following possibilities:
Konstante Wert Beschreibung
ANIM_Loop 0 Once end is reached the value is reset to begin so the cycle restarts.
ANIM_Hold 1 Once end is reached the value remains constant.
ANIM_Remove 2 Once end is reached the corresponding animation is removed the same way as if StopAnimation were called to the exact point in time. For combination nodes the child node with the smaller weight is removed.

Anmerkung

Siehe die Animations-Dokumentation für eine Beschreibung des Animationssystems.

Beispiel

var start = 0;
var end = GetAnimationLength("Turn");
if(GetWind() < 0)
{
  start = end;
  end = 0;
}

if(GetWind() != 0)
  SetAnimationPosition(GetRootAnimation(5), Anim_Linear(GetAnimationPosition(GetRootAnimation(5)), start, end, 7200/GetWind(), ANIM_Loop));
else
  SetAnimationPosition(GetRootAnimation(5), Anim_Const(GetAnimationPosition(GetRootAnimation(5))));
Setzt die Geschwindigkeit mit der die Animation im Slot 5 abgespielt wird abhängig von der Windgeschwindigkeit. Weht der Wind nach links so wird die Animation rückwärts abgespielt. Es wäre auch möglich die Position jeden Frame mit Anim_Const zu setzen, bei der Lösung mit Anim_Linear reicht es aber aus wenn die Funktion nur alle paar Frames aufgerufen wird, da sich das Windrad in der Zwischenzeit mit konstanter Geschwindigkeit weiter dreht (es wird also die Näherung gemacht, dass die Windgeschwindigkeit für kleine Zeitintervalle konstant ist).
Siehe auch: Anim_AbsX, Anim_AbsY, Anim_Action, Anim_Const, Anim_Dist, Anim_R, Anim_X, Anim_XDir, Anim_Y, Anim_YDir, PlayAnimation, SetAnimationPosition, SetAnimationWeight, StopAnimation
Clonk-Karl, 2010-01