Source: Roblox Creator Hub · CC BY 4.0 · View source · Code samples: MIT Imported 2026-10-03. Formatting adapted for this site.
Animator
Inherits from: Instance → Object
Animator is the main class responsible for the playback and replication of Animations. All replication of playing AnimationTracks is handled through the Animator instance.
See Animation in Roblox to learn how to create and add pre-built or custom animations to your game.
Inherits from: Instance
Memory category: Instances
Properties
| Name | Type / Returns | Description |
|---|---|---|
| Animator.EvaluationThrottled | boolean | Indicates whether animation evaluation was throttled (skipped) this frame for this Animator. |
| Animator.PreferLodEnabled | boolean | Controls whether animation LOD throttling is allowed for this Animator. When set to false, animations always evaluate at full fidelity. |
Inherited from Instance
| Name | Type / Returns | Description |
|---|---|---|
| Instance.Archivable | boolean | Determines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published. |
| Instance.archivable | boolean | |
| Instance.Capabilities | SecurityCapabilities | The set of capabilities allowed to be used for scripts inside this container. |
| Instance.IsInSandbox | boolean | Indicates whether the instance is inside a sandboxed container. |
| Instance.Name | string | A non-unique identifier of the Instance. |
| Instance.Parent | Instance | Determines the hierarchical parent of the Instance. |
| Instance.PredictionMode | PredictionMode | Reflects the client-side prediction mode applied to the instance under server-authoritative physics. |
| Instance.RobloxLocked | boolean | A deprecated property that used to protect CoreGui objects. |
| Instance.Sandboxed | boolean | When enabled, the instance can only access abilities in its Capabilities list. |
| Instance.UniqueId | UniqueId | A unique identifier for the instance. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object.ClassName | string | A read-only string representing the class this Object belongs to. |
| Object.className | string |
Animator.EvaluationThrottled
A read-only property that indicates whether animation evaluation was throttled (skipped) on this frame. When true, the Animator reused the pose from the previous frame instead of evaluating fresh animation data.
This property is useful when layering procedural animation on top of Transform — if evaluation was throttled, applying procedural offsets would fight the stale pose and should be skipped:
| Field | Value |
|---|---|
| type | boolean |
| tags | ["ReadOnly","NotReplicated"] |
| security | {"read":"None","write":"None"} |
| thread safety | Safe |
| category | Behavior |
| serialization | {"can_load":false,"can_save":false} |
| capabilities | ["Animation"] |
Code samples: View on Creator Hub (Animator-EvaluationThrottled).
Animator.PreferLodEnabled
When true (the default), the engine may reduce animation evaluation frequency for remotely-simulated characters based on distance, screen coverage, and frame budget. When set to false, LOD-based throttling is disabled and this Animator always evaluates at full fidelity.
Setting this to false is useful for important NPCs or characters that must always animate smoothly regardless of distance. However, disabling LOD for many animators simultaneously can impact performance.
Note that this property only controls per-animator LOD throttling. The workspace-level Workspace.ClientAnimatorThrottlingMode setting can independently disable or enable throttling for all animators.
| Field | Value |
|---|---|
| type | boolean |
| security | {"read":"None","write":"None"} |
| thread safety | ReadSafe |
| category | Behavior |
| serialization | {"can_load":true,"can_save":true} |
| capabilities | ["Animation"] |
Methods
| Name | Type / Returns | Description |
|---|---|---|
| Animator:ApplyJointVelocities | () | Computes relative velocities between parts and applies them to Motor6D.Part1. |
| Animator:GetPlayingAnimationTracks | Array | Returns the list of currently active AnimationTracks. |
| Animator:GetTrackByAnimationId | AnimationTrack? | Returns an existing AnimationTrack on this Animator that was loaded from an Animation with the given animation ID. Unlike LoadAnimation(), this method does not create a new AnimationTrack instance. |
| Animator:LoadAnimation | AnimationTrack | Loads an Animation onto an Animator, returning an AnimationTrack. |
| Animator:StepAnimations | () | Increments the AnimationTrack.TimePosition of all playing AnimationTracks that are loaded onto the Animator, applying the offsets to the model associated with the Animator. For use in the command bar or by plugins only. |
Inherited from Instance
| Name | Type / Returns | Description |
|---|---|---|
| Instance:AddTag | () | Applies a tag to the instance. |
| Instance:children | Instances | Returns an array of the object's children. |
| Instance:ClearAllChildren | () | This method destroys all of an instance's children. |
| Instance:Clone | Instance | Create a copy of an instance and all its descendants, ignoring instances that are not Archivable. |
| Instance:clone | Instance | |
| Instance:Destroy | () | Sets the Instance.Parent property to nil, locks the Instance.Parent property, disconnects all connections, and calls Destroy() on all children. |
| Instance:destroy | () | |
| Instance:FindFirstAncestor | Instance? | Returns the first ancestor of the Instance whose Instance.Name is equal to the given name. |
| Instance:FindFirstAncestorOfClass | Instance? | Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className. |
| Instance:FindFirstAncestorWhichIsA | Instance? | Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className. |
| Instance:FindFirstChild | Instance? | Returns the first child of the Instance found with the given name. |
| Instance:findFirstChild | Instance | |
| Instance:FindFirstChildOfClass | Instance? | Returns the first child of the Instance whose ClassName is equal to the given class name. |
| Instance:FindFirstChildWhichIsA | Instance? | Returns the first child of the Instance for whom Object:IsA() returns true for the given className. |
| Instance:FindFirstDescendant | Instance? | Returns the first descendant found with the given Instance.Name. |
| Instance:GetActor | Actor? | Returns the Actor associated with the Instance, if any. |
| Instance:GetAttribute | Variant | Returns the value which has been assigned to the given attribute name. |
| Instance:GetAttributeChangedSignal | RBXScriptSignal | Returns an event that fires when the given attribute changes. |
| Instance:GetAttributes | Dictionary | Returns a dictionary of the instance's attributes. |
| Instance:GetChildren | Instances | Returns an array containing all of the instance's children. |
| Instance:getChildren | Instances | |
| Instance:GetDebugId | string | Returns a coded string of the debug ID used internally by Roblox. |
| Instance:GetDescendants | Instances | Returns an array containing all of the descendants of the instance. |
| Instance:GetFullName | string | Returns a string describing the instance's ancestry. |
| Instance:GetStyled | Variant | Returns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified. |
| Instance:GetStyledPropertyChangedSignal | RBXScriptSignal | Returns an event that fires when the given style property changes on the instance. |
| Instance:GetTags | Array | Gets an array of all tags applied to the instance. |
| Instance:HasTag | boolean | Check whether the instance has a given tag. |
| Instance:IsAncestorOf | boolean | Returns true if an Instance is an ancestor of the given descendant. |
| Instance:IsDescendantOf | boolean | Returns true if an Instance is a descendant of the given ancestor. |
| Instance:isDescendantOf | boolean | |
| Instance:IsPropertyModified | boolean | Returns true if the value stored in the specified property is not equal to the code-instantiated default. |
| Instance:QueryDescendants | Instances | Returns an array containing all descendants of the instance that match the selector string. |
| Instance:Remove | () | Sets the object's Parent to nil, and does the same for all its descendants. |
| Instance:remove | () | |
| Instance:RemoveTag | () | Removes a tag from the instance. |
| Instance:ResetPropertyToDefault | () | Resets a property to its default value. |
| Instance:SetAttribute | () | Sets the attribute with the given name to the given value. |
| Instance:WaitForChild | Instance | Returns the child of the Instance with the given name. If the child does not exist, it will yield the current thread until it does. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object:GetPropertyChangedSignal | RBXScriptSignal | Get an event that fires when a given property of the object changes. |
| Object:IsA | boolean | Returns true if an object's class matches or inherits from a given class. |
| Object:isA | boolean |
Animator:ApplyJointVelocities
Given the current set of AnimationTracks playing and their current times and play speeds, this method computes relative velocities between the parts and applies them to Motor6D.Part1 (the part which Animator considers the "child" part). These relative velocity calculations and assignments happen in the order provided.
This method doesn't apply velocities for a given joint if both of the joint's parts are currently part of the same assembly; for example, if they are still connected directly or indirectly by motors or welds.
Note that this method doesn't disable or remove the joints for you. You must disable or otherwise remove the rigid joints from the assembly before calling this method.
The given Motor6Ds are not required to be descendants of the DataModel. Removing the joints from the DataModel before calling this method is supported.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| motors | Variant | An array of Motor6D instances to compute and apply velocities for. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| capabilities | ["Animation"] |
Animator:GetPlayingAnimationTracks
Returns the list of currently active AnimationTracks on this Animator. This includes tracks that are fading out and does not depend on AnimationTrack.IsPlaying being true; as a result, GetTrackByAnimationId() may be a better option to get a specific AnimationTrack by its asset ID. Fading tracks are automatically stopped and removed from this list once their blend weight reaches zero.
Returns
| Type | Description |
|---|---|
| Array | An array of currently active AnimationTracks on this Animator, including tracks that are fading out. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| capabilities | ["Animation"] |
| simulationAccess | true |
Animator:GetTrackByAnimationId
Returns an existing AnimationTrack on this Animator that was loaded from an Animation with the given animation ID. Unlike LoadAnimation(), this method does not create a new AnimationTrack instance; it only looks up a track that was previously loaded.
If multiple tracks have been loaded for the same animation ID, this method returns the first match. If no matching track exists, it returns nil.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| animationId | ContentId | The asset ID of the Animation whose loaded track should be retrieved. |
Returns
| Type | Description |
|---|---|
| AnimationTrack? | The first AnimationTrack on this Animator that was loaded from the given animation ID, or nil if none has been loaded. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| capabilities | ["Animation"] |
| simulationAccess | true |
Code samples: View on Creator Hub (Animator-GetTrackByAnimationId).
Animator:LoadAnimation
This method loads the given Animation onto this Animator, returning a playable AnimationTrack. When called on an Animator within models that the client has network ownership of, for example the local player's character or from BasePart:SetNetworkOwner(), this method also loads the animation for the server as well.
Note that the Animator must be in the Workspace before making a call to LoadAnimation() or else it will be unable to retrieve the AnimationClipProvider service and throw an error.
Warning
Do not use LoadAnimation() in an attempt to retrieve an existing track. Calling LoadAnimation() always creates a new AnimationTrack instance which may impact game performance if overused. Instead, use GetTrackByAnimationId() when you need to look up a track that was already loaded.
Loading an Animation on Client or Server
In order for AnimationTracks to replicate correctly, it's important to know when they should be loaded on the client or on the server:
If an
Animatoris a descendant of aHumanoidorAnimationControllerin a player'sPlayer.Character, animations started on that player's client will be replicated to the server and other clients.If the
Animatoris not a descendant of a player character, its animations must be loaded and started on the server to replicate.
The Animator object must be initially created on the server and replicated to clients for animation replication to work at all. If an Animator is created locally, then AnimationTracks loaded with that Animator will not replicate.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| animation | Animation | The Animation to be used. |
Returns
| Type | Description |
|---|---|
| AnimationTrack | A new AnimationTrack linked to the given Animation. |
| Field | Value |
|---|---|
| security | None |
| thread safety | Unsafe |
| capabilities | ["Animation"] |
| simulationAccess | true |
Animator:StepAnimations
Increments the AnimationTrack.TimePosition of all playing AnimationTracks that are loaded onto the Animator, applying the offsets to the model associated with the Animator. For use in the command bar or by plugins only.
The deltaTime parameter determines the number of seconds to increment on the animation's progress. Typically this method will be called in a loop to preview the length of an animation (see example).
Note that once animations have stopped playing, the model's joints will need to be manually reset to their original positions (see example).
Access
This method requires Plugin-level security. It can only be called from the Studio command bar or from a Plugin. Regular Script and LocalScript instances cannot call this method.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| deltaTime | float | The amount of time in seconds animation playback is to be incremented. by. |
Returns
| Type | Description |
|---|---|
| () |
| Field | Value |
|---|---|
| security | PluginSecurity |
| thread safety | Unsafe |
| capabilities | ["Animation"] |
Code samples: View on Creator Hub (Animator-StepAnimations).
Events
| Name | Type / Returns | Description |
|---|---|---|
| Animator.AnimationPlayed | Fires when the Animator starts playing an AnimationTrack. |
Inherited from Instance
| Name | Type / Returns | Description |
|---|---|---|
| Instance.AncestryChanged | Fires when the Instance.Parent property of this object or one of its ancestors is changed. | |
| Instance.AttributeChanged | Fires whenever an attribute is changed on the Instance. | |
| Instance.ChildAdded | Fires after an object is parented to this Instance. | |
| Instance.childAdded | ||
| Instance.ChildRemoved | Fires after a child is removed from this Instance. | |
| Instance.DescendantAdded | Fires after a descendant is added to the Instance. | |
| Instance.DescendantRemoving | Fires immediately before a descendant of the Instance is removed. | |
| Instance.Destroying | Fires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy(). | |
| Instance.StyledPropertiesChanged | Fires whenever any style property is changed on the instance, including when a property is set to nil. |
Inherited from Object
| Name | Type / Returns | Description |
|---|---|---|
| Object.Changed | Fires immediately after a property of the object changes, with some limitations. |
Animator.AnimationPlayed
Fires for all AnimationTrack:Play() calls on AnimationTracks created and owned by the Animator.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| animationTrack | AnimationTrack | The AnimationTrack that began playing. |
| Field | Value |
|---|---|
| security | None |
| capabilities | ["Animation"] |