11 min read

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

NameType / ReturnsDescription
Animator.EvaluationThrottledbooleanIndicates whether animation evaluation was throttled (skipped) this frame for this Animator.
Animator.PreferLodEnabledbooleanControls whether animation LOD throttling is allowed for this Animator. When set to false, animations always evaluate at full fidelity.

Inherited from Instance

NameType / ReturnsDescription
Instance.ArchivablebooleanDetermines if an Instance and its descendants can be cloned using Instance:Clone(), and can be saved/published.
Instance.archivableboolean
Instance.CapabilitiesSecurityCapabilitiesThe set of capabilities allowed to be used for scripts inside this container.
Instance.IsInSandboxbooleanIndicates whether the instance is inside a sandboxed container.
Instance.NamestringA non-unique identifier of the Instance.
Instance.ParentInstanceDetermines the hierarchical parent of the Instance.
Instance.PredictionModePredictionModeReflects the client-side prediction mode applied to the instance under server-authoritative physics.
Instance.RobloxLockedbooleanA deprecated property that used to protect CoreGui objects.
Instance.SandboxedbooleanWhen enabled, the instance can only access abilities in its Capabilities list.
Instance.UniqueIdUniqueIdA unique identifier for the instance.

Inherited from Object

NameType / ReturnsDescription
Object.ClassNamestringA read-only string representing the class this Object belongs to.
Object.classNamestring

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:

FieldValue
typeboolean
tags["ReadOnly","NotReplicated"]
security{"read":"None","write":"None"}
thread safetySafe
categoryBehavior
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.

FieldValue
typeboolean
security{"read":"None","write":"None"}
thread safetyReadSafe
categoryBehavior
serialization{"can_load":true,"can_save":true}
capabilities["Animation"]

Methods

NameType / ReturnsDescription
Animator:ApplyJointVelocities()Computes relative velocities between parts and applies them to Motor6D.Part1.
Animator:GetPlayingAnimationTracksArrayReturns the list of currently active AnimationTracks.
Animator:GetTrackByAnimationIdAnimationTrack?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:LoadAnimationAnimationTrackLoads 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

NameType / ReturnsDescription
Instance:AddTag()Applies a tag to the instance.
Instance:childrenInstancesReturns an array of the object's children.
Instance:ClearAllChildren()This method destroys all of an instance's children.
Instance:CloneInstanceCreate a copy of an instance and all its descendants, ignoring instances that are not Archivable.
Instance:cloneInstance
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:FindFirstAncestorInstance?Returns the first ancestor of the Instance whose Instance.Name is equal to the given name.
Instance:FindFirstAncestorOfClassInstance?Returns the first ancestor of the Instance whose Object.ClassName is equal to the given className.
Instance:FindFirstAncestorWhichIsAInstance?Returns the first ancestor of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstChildInstance?Returns the first child of the Instance found with the given name.
Instance:findFirstChildInstance
Instance:FindFirstChildOfClassInstance?Returns the first child of the Instance whose ClassName is equal to the given class name.
Instance:FindFirstChildWhichIsAInstance?Returns the first child of the Instance for whom Object:IsA() returns true for the given className.
Instance:FindFirstDescendantInstance?Returns the first descendant found with the given Instance.Name.
Instance:GetActorActor?Returns the Actor associated with the Instance, if any.
Instance:GetAttributeVariantReturns the value which has been assigned to the given attribute name.
Instance:GetAttributeChangedSignalRBXScriptSignalReturns an event that fires when the given attribute changes.
Instance:GetAttributesDictionaryReturns a dictionary of the instance's attributes.
Instance:GetChildrenInstancesReturns an array containing all of the instance's children.
Instance:getChildrenInstances
Instance:GetDebugIdstringReturns a coded string of the debug ID used internally by Roblox.
Instance:GetDescendantsInstancesReturns an array containing all of the descendants of the instance.
Instance:GetFullNamestringReturns a string describing the instance's ancestry.
Instance:GetStyledVariantReturns the styled or explicitly modified value of the specified property, or else the default property value if it hasn't been styled/modified.
Instance:GetStyledPropertyChangedSignalRBXScriptSignalReturns an event that fires when the given style property changes on the instance.
Instance:GetTagsArrayGets an array of all tags applied to the instance.
Instance:HasTagbooleanCheck whether the instance has a given tag.
Instance:IsAncestorOfbooleanReturns true if an Instance is an ancestor of the given descendant.
Instance:IsDescendantOfbooleanReturns true if an Instance is a descendant of the given ancestor.
Instance:isDescendantOfboolean
Instance:IsPropertyModifiedbooleanReturns true if the value stored in the specified property is not equal to the code-instantiated default.
Instance:QueryDescendantsInstancesReturns 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:WaitForChildInstanceReturns 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

NameType / ReturnsDescription
Object:GetPropertyChangedSignalRBXScriptSignalGet an event that fires when a given property of the object changes.
Object:IsAbooleanReturns true if an object's class matches or inherits from a given class.
Object:isAboolean

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

NameTypeDefaultDescription
motorsVariantAn array of Motor6D instances to compute and apply velocities for.

Returns

TypeDescription
()
FieldValue
securityNone
thread safetyUnsafe
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

TypeDescription
ArrayAn array of currently active AnimationTracks on this Animator, including tracks that are fading out.
FieldValue
securityNone
thread safetyUnsafe
capabilities["Animation"]
simulationAccesstrue

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

NameTypeDefaultDescription
animationIdContentIdThe asset ID of the Animation whose loaded track should be retrieved.

Returns

TypeDescription
AnimationTrack?The first AnimationTrack on this Animator that was loaded from the given animation ID, or nil if none has been loaded.
FieldValue
securityNone
thread safetyUnsafe
capabilities["Animation"]
simulationAccesstrue

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:

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

NameTypeDefaultDescription
animationAnimationThe Animation to be used.

Returns

TypeDescription
AnimationTrackA new AnimationTrack linked to the given Animation.
FieldValue
securityNone
thread safetyUnsafe
capabilities["Animation"]
simulationAccesstrue

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

NameTypeDefaultDescription
deltaTimefloatThe amount of time in seconds animation playback is to be incremented. by.

Returns

TypeDescription
()
FieldValue
securityPluginSecurity
thread safetyUnsafe
capabilities["Animation"]

Code samples: View on Creator Hub (Animator-StepAnimations).

Events

NameType / ReturnsDescription
Animator.AnimationPlayedFires when the Animator starts playing an AnimationTrack.

Inherited from Instance

NameType / ReturnsDescription
Instance.AncestryChangedFires when the Instance.Parent property of this object or one of its ancestors is changed.
Instance.AttributeChangedFires whenever an attribute is changed on the Instance.
Instance.ChildAddedFires after an object is parented to this Instance.
Instance.childAdded
Instance.ChildRemovedFires after a child is removed from this Instance.
Instance.DescendantAddedFires after a descendant is added to the Instance.
Instance.DescendantRemovingFires immediately before a descendant of the Instance is removed.
Instance.DestroyingFires immediately before (or is deferred until after) the instance is destroyed via Instance:Destroy().
Instance.StyledPropertiesChangedFires whenever any style property is changed on the instance, including when a property is set to nil.

Inherited from Object

NameType / ReturnsDescription
Object.ChangedFires 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

NameTypeDefaultDescription
animationTrackAnimationTrackThe AnimationTrack that began playing.
FieldValue
securityNone
capabilities["Animation"]