Class
AnimationTrack
NotCreatable
Controls the playback of an animation on an Animator.
Controls the playback of an animation on an Animator. This object
cannot be created, instead it is returned by the
Animator:LoadAnimation() method.
Properties 9#
AnimationAnimation | The Animation object that was used to create this
AnimationTrack.ReadSafeReadOnlyNotReplicated |
IsPlayingboolean | A read-only property that returns true when the AnimationTrack is
playing.ReadSafeReadOnlyNotReplicated |
Lengthfloat | A read-only property that returns the length (in seconds) of an
AnimationTrack. This will return 0 until the animation has fully
loaded and thus may not be immediately available.ReadSafeReadOnlyNotReplicated |
Loopedboolean | Sets whether the animation will repeat after finishing. If it is changed while playing the result will take effect after the animation finishes.ReadSafe |
PriorityAnimationPriority | Sets the priority of an AnimationTrack. Depending on what this is
set to, playing multiple animations at once will look to this property to
figure out which Keyframe Poses should be played over
one another.ReadSafe |
Speedfloat | Read-only property that gives the current playback speed of the
AnimationTrack.ReadSafeReadOnlyNotReplicated |
TimePositionfloat | Returns the position in time in seconds that an AnimationTrack is
through playing its source animation. Can be set to make the track jump to
a specific moment in the animation.ReadSafeNotReplicated |
WeightCurrentfloat | Read-only property that gives the current weight of the
AnimationTrack.ReadSafeReadOnlyNotReplicated |
WeightTargetfloat | Read-only property that gives the current weight of the
AnimationTrack.ReadSafeReadOnlyNotReplicated |
Animation: Animation#
ReadOnlyNotReplicatedReadSafe
The Animation object that was used to create this
AnimationTrack. To create an AnimationTrack, you must load
an Animation object onto an Animator using the
Animator:LoadAnimation() method.
IsPlaying: boolean#
ReadOnlyNotReplicatedReadSafe
A read-only property that returns true when the AnimationTrack is
playing.
This property can be used to check if an animation is already playing
before playing it (as that would cause it to restart). If you want to
obtain all playing AnimationTracks on an
Animator or a Humanoid, they should use
Animator:GetPlayingAnimationTracks()
Length: float#
ReadOnlyNotReplicatedReadSafe
A read-only property that returns the length (in seconds) of an
AnimationTrack. This will return 0 until the animation has fully
loaded and thus may not be immediately available.
When the AnimationTrack.Speed of an AnimationTrack is
equal to 1, the animation will take AnimationTrack.Length (in
seconds) to complete.
Looped: boolean#
ReadSafe
This property sets whether the animation will repeat after finishing. If it is changed while playing the result will take effect after the animation finishes.
This property defaults to how it was set in the
Animation Editor. However, this property
can be changed, allowing control over the AnimationTrack while it
is running. This property also correctly handles animations played in
reverse (negative AnimationTrack.Speed). After the first keyframe
is reached, it will restart at the last keyframe.
Priority: AnimationPriority#
ReadSafe
This property sets the priority of an AnimationTrack. Depending on
what this is set to, playing multiple animations at once will look to this
property to figure out which Keyframe poses should be played over
one another. It uses AnimationPriority which has 7 priority levels:
Properly set animation priorities, either through the
Animation Editor or through this property,
allow multiple animations to be played without them clashing. Where two
playing animations direct the target to move the same limb in different
ways, the AnimationTrack with the highest priority will show. If
both animations have the same priority, the weights of the tracks will be
used to combine the animations.
Speed: float#
ReadOnlyNotReplicatedReadSafe
This read-only property gives the current playback speed of the
AnimationTrack. When equal to 1, the amount of time an animation
takes to complete is equal to AnimationTrack.Length, in seconds.
If the speed is adjusted through AnimationTrack:AdjustSpeed(), the
actual time it will take a track to play can be computed by dividing the
length by the speed. Speed is a unitless quantity.
TimePosition: float#
NotReplicatedReadSafe
Returns the position in time in seconds that an AnimationTrack is
through playing its source animation. Can be set to make the track jump to
a specific moment in the animation, but the AnimationTrack must be
playing to do so. It can also be used in combination with
AnimationTrack:AdjustSpeed() to freeze the animation at a desired
point by setting speed to 0.
WeightCurrent: float#
ReadOnlyNotReplicatedReadSafe
When weight is set in an AnimationTrack it does not change
instantaneously but moves from AnimationTrack.WeightCurrent to
AnimationTrack.WeightTarget. The time it takes to do this is
determined by the fadeTime parameter given when the animation is played,
or the weight is adjusted.
AnimationTrack.WeightCurrent can be checked against
AnimationTrack.WeightTarget to see if the desired weight has been
reached. Note that these values should not be checked for equality with
the == operator, as both of these values are floats. To see if
AnimationTrack.WeightCurrent has reached the target weight, it is
recommended to see if the distance between those values is sufficiently
small.
WeightTarget: float#
ReadOnlyNotReplicatedReadSafe
This read-only property gives the current weight of the
AnimationTrack. It has a default value of 1 and is set when
AnimationTrack:Play(), AnimationTrack:Stop() or
AnimationTrack:AdjustWeight() is called. When weight is set in an
AnimationTrack it does not change instantaneously but moves from
AnimationTrack.WeightCurrent to
AnimationTrack.WeightTarget. The time it takes to do this is
determined by the fadeTime parameter given when the animation is played,
or the weight is adjusted.
AnimationTrack.WeightCurrent can be checked against
AnimationTrack.WeightTarget to see if the desired weight has been
reached. Note that these values should not be checked for equality with
the == operator, as both of these values are floats. To see if
AnimationTrack.WeightCurrent has reached the target weight, it is
recommended to see if the distance between those values is sufficiently
small.
Methods 9#
| AdjustSpeed | Changes the AnimationTrack.Speed of an animation. A positive value
for speed plays the animation forward, a negative one plays it backwards,
and 0 pauses it.CustomLuaState |
| AdjustWeight | Changes the weight of an animation, with the optional fadeTime parameter
determining how long it takes for AnimationTrack.WeightCurrent to
reach AnimationTrack.WeightTarget.CustomLuaState |
| GetMarkerReachedSignal | Returns an RBXScriptSignal (event) that fires when a specified
KeyframeMarker has been hit in an animation. |
| GetParameter | Returns the value of a parameter on the animation graph by key. Returns nil if the parameter has not been set. |
| GetParameterDefaults | Returns a dictionary of parameter values initially set as instance
attributes on the AnimationGraphDefinition instance used to build
the animation graph inside this track. |
| GetTimeOfKeyframe | Returns the time position of the first Keyframe of the given name
in an AnimationTrack. |
| Play | Plays the AnimationTrack. Once called an AnimationTrack
will play with the specified fadeTime, weight and speed.CustomLuaState |
| SetParameter | Sets a parameter value on the animation graph, driving animation graph node inputs. |
| Stop | Stops the AnimationTrack.CustomLuaState |
AdjustSpeed(speed: float = 1): ()#
CustomLuaState
This method changes the AnimationTrack.Speed of an animation. A
positive value for speed plays the animation forward, a negative one plays
it backwards, and 0 pauses it.
A track's initial speed is set as a parameter in
AnimationTrack:Play(). However a track's
AnimationTrack.Speed can be changed during playback using this
method. When speed is equal to 1, the amount of time an animation takes
to complete is equal to AnimationTrack.Length (in seconds).
When is adjusted, then the actual time it will take a track to play can be
computed by dividing the length by the speed. AnimationTrack.Speed
is a unitless quantity.
| Name | Type | Default | Description |
|---|---|---|---|
speed | float | 1 | The playback speed the animation is to be changed to. |
Returns
()
AdjustWeight(weight: float = 1, fadeTime: float = 0.100000001): ()#
CustomLuaState
Changes the weight of an animation, with the optional fadeTime parameter
determining how long it takes for AnimationTrack.WeightCurrent to
reach AnimationTrack.WeightTarget.
When weight is set in an AnimationTrack it does not change
instantaneously but moves from AnimationTrack.WeightCurrent to
AnimationTrack.WeightTarget. The time it takes to do this is
determined by the fadeTime parameter given when the animation is played,
or the weight is adjusted.
The animation weighting system is used to determine how
AnimationTracks playing at the same priority are
blended together. The default weight is 1, and no movement will be
visible on an AnimationTrack with a weight of 0. The pose that
is shown at any point in time is determined by the weighted average of all
the Poses and the AnimationTrack.WeightCurrent of
each AnimationTrack. See below for an example of animation
blending in practice. In most cases blending animations is not required
and using AnimationTrack.Priority is more suitable.
| Name | Type | Default | Description |
|---|---|---|---|
weight | float | 1 | The weight the animation is to be changed to. |
fadeTime | float | 0.100000001 | The duration of time that the animation will fade between the old weight and the new weight for. |
Returns
()
GetMarkerReachedSignal(name: string): RBXScriptSignal#
This method returns an RBXScriptSignal (event) similar to the
AnimationTrack.KeyframeReached event, except it only fires when a
specified KeyframeMarker has been hit in an
animation. The difference allows for greater control of
when the event will fire.
To learn more about using this method, see here.
See Also#
KeyframeMarkerAnimationTrack, controls the playback of an animation on aHumanoidorAnimationControllerKeyframe, holds thePosesapplied to joints in aModelat a given point of time in an animationKeyframe:AddMarker()Keyframe:RemoveMarker()Keyframe:GetMarkers()
| Name | Type | Default | Description |
|---|---|---|---|
name | string | The name of the KeyframeMarker the signal is being created
for. Not to be confused with the name of the Keyframe. |
Returns
RBXScriptSignal— The signal created and fired when the animation reaches the createdKeyframeMarker.
GetParameter(key: string): Variant#
Returns the value of a parameter on the animation graph by key. If the
parameter has not been set via AnimationTrack:SetParameter(), this
method returns nil.
Parameters are used to drive inputs on animation graph nodes. Use this
method to read back the current value of a parameter that was previously
set with AnimationTrack:SetParameter().
| Name | Type | Default | Description |
|---|---|---|---|
key | string | The name of the parameter to retrieve. |
Returns
Variant— The current value of the parameter, or nil if not set.
GetParameterDefaults(): Dictionary#
Returns a dictionary of default parameter values defined by the animation graph. This can be used to discover what parameters are available on an animation graph and their initial values.
If the underlying Animation is not an animation graph, this method
returns an empty dictionary.
Returns
Dictionary— A dictionary mapping parameter names to their default values. Returns an empty dictionary if the animation is not an animation graph.
GetTimeOfKeyframe(keyframeName: string): double#
Returns the time position of the first Keyframe of the given name
in an AnimationTrack. If multiple Keyframes share
the same name, it will return the earliest one in the animation.
This method will return an error if it is uses with an invalid keyframe
name (one that does not exist for example) or if the underlying
Animation has not yet loaded. To address this make sure only
correct keyframe names are used and the animation has loaded before
calling this method.
To check if the animation has loaded, verify that the
AnimationTrack.Length is greater than zero.
| Name | Type | Default | Description |
|---|---|---|---|
keyframeName | string | The name associated with the Keyframe to be found. |
Returns
double— The time, in seconds, theKeyframeoccurs at normal playback speed.
Play(fadeTime: float = 0.100000001, weight: float = 1, speed: float = 1): ()#
CustomLuaState
When AnimationTrack:Play() is called the track's animation will
begin playing and the weight of the animation will increase from 0 to
the specified weight (defaults to 1) over the specified fadeTime.
The speed the AnimationTrack will play at is determined by the
speed parameter (defaults to 1). When the speed is equal to 1 the
number of seconds the track will take to complete is equal to the track's
AnimationTrack.Length property. For example, a speed of 2 will
cause the track to play twice as fast.
The weight and speed of the animation can also be changed after the
animation has begun playing by using the
AnimationTrack:AdjustWeight() and
AnimationTrack:AdjustSpeed() methods.
If you want to start the animation at a specific point using
AnimationTrack.TimePosition, it's important the animation is
played before this is done.
| Name | Type | Default | Description |
|---|---|---|---|
fadeTime | float | 0.100000001 | The duration of time that the animation's weight should be faded in for. |
weight | float | 1 | The weight the animation is to be played at. |
speed | float | 1 | The playback speed of the animation. |
Returns
()
SetParameter(key: string, value: Variant): ()#
Sets a parameter value on the animation graph, driving animation graph node inputs. Parameters can be set before or during playback. If set before the animation graph has loaded, the value is stored and applied once the graph is ready.
Non-finite numeric values (NaN, Inf) are sanitized to 0 and produce a
warning. Use AnimationTrack:GetParameterDefaults() to discover
what parameters are available and their default values.
| Name | Type | Default | Description |
|---|---|---|---|
key | string | The name of the parameter to set. | |
value | Variant | The value to assign to the parameter. Non-finite numeric values are sanitized to 0. |
Returns
()
Stop(fadeTime: float = 0.100000001): ()#
CustomLuaState
Stops the AnimationTrack. Once called, the weight of the animation
will move towards zero over a length of time specified by the optional
fadeTime parameter. For example, if Stop() is called with a fadeTime
of 2, it will take two seconds for the weight of the track to reach zero
and its effects completely end. Please note this will be the case
regardless of the initial weight of the animation.
Usage Notes#
After calling Stop(), subsequent calls to Stop() and
AdjustWeight() will not work as
expected. To adjust a track that's fading out, you must first call
Play() to reset the
IsPlaying property to true.
It is not recommended to use a fadeTime of 0 in an attempt to override
this effect and end the animation immediately for Motor6Ds
that have their Motor.MaxVelocity set to zero, as this causes the
joints to freeze in place. If it must end immediately, ensure the
Motor.MaxVelocity of Motor6Ds in your rig are high
enough for them to snap properly.
| Name | Type | Default | Description |
|---|---|---|---|
fadeTime | float | 0.100000001 | The time, in seconds, for which animation weight is to be faded out over. |
Returns
()
Events 4#
| DidLoop | Fires when an AnimationTrack loops on the next update following
the end of the previous animation loop. |
| Ended | Fires when the AnimationTrack is completely done moving anything
in the world. |
| KeyframeReached | Fires every time playback of an AnimationTrack reaches a
Keyframe that does not have the default name of Keyframe.Deprecated |
| Stopped | Fires when the AnimationTrack finishes playing. The AnimationTrack
might still animate the subject while the animation "fades out". To catch
when the AnimationTrack is completely done moving anything in the world,
use the AnimationTrack.Ended event. |
DidLoop()#
This event fires whenever a looped AnimationTrack completes a
loop, on the next update.
Currently it may also fire at the exact end of a non looped animation track but this behavior should not be relied upon.
Ended()#
Fires when the AnimationTrack is completely done moving anything
in the world, meaning the animation has finished playing, the "fade out"
is finished, and the subject is in a neutral pose.
You can use this to take action when the animation track's subject is back
in a neutral pose that's unaffected by the AnimationTrack or to
clean up the AnimationTrack.
KeyframeReached(keyframeName: string)#
Deprecated
Deprecated. This event has been superseded by the
AnimationTrack:GetMarkerReachedSignal() method.
Fires every time playback of an AnimationTrack reaches a
Keyframe that does not have the default name of Keyframe. This
event lets you run code at predefined points in an animation (set by
Keyframe names).
Keyframe names do not need to be unique. For example, if an
animation has three keyframes named Particles, this event will fire each
time one of these keyframes is reached.
Keyframe names can be set in the
Animation Editor when creating or editing
an animation. They cannot however be set by a Script on an
existing animation prior to playing it.
| Name | Type | Default | Description |
|---|---|---|---|
keyframeName | string | The name of the Keyframe reached. |
Stopped()#
Fires whenever the AnimationTrack finishes playing.
This event has a number of uses. It can be used to wait until an
AnimationTrack has stopped before continuing (for example, if
chaining a series of animations to play after each other). It can also be
used to clean up any Instances created during the
animation playback.
Inherited members#
Inherited from Instance 58
Properties (10)
Archivable, archivable, Capabilities, IsInSandbox, Name, Parent, PredictionMode, RobloxLocked, Sandboxed, UniqueId
Methods (39)
AddTag, children, ClearAllChildren, Clone, clone, Destroy, destroy, FindFirstAncestor, FindFirstAncestorOfClass, FindFirstAncestorWhichIsA, FindFirstChild, findFirstChild, FindFirstChildOfClass, FindFirstChildWhichIsA, FindFirstDescendant, GetActor, GetAttribute, GetAttributeChangedSignal, GetAttributes, GetChildren, getChildren, GetDebugId, GetDescendants, GetFullName, GetStyled, GetStyledPropertyChangedSignal, GetTags, HasTag, IsAncestorOf, IsDescendantOf, isDescendantOf, IsPropertyModified, QueryDescendants, Remove, remove, RemoveTag, ResetPropertyToDefault, SetAttribute, WaitForChild