Using Animations in Games

Using Animations in Games

10 min

Animations truly bring a game to life. From easily-accessible character animations in the catalog to detailed animations built with the Articles/using animation editor|Animation Editor, Roblox offers a variety of powerful animation options.

Changing Default Animations

By default, Roblox player characters include common animations like running, climbing, swimming, and jumping. However, these animations are not locked in place — if desired, you can replace them with catalog animations or even load in your own Articles/using animation editor|custom animations.

To change a default character animation, you’ll first need to locate the desired animation’s asset ID.

Catalog Animations

To use a catalog animation, locate its asset ID as outlined on the articles/catalog animations|Catalog Animations reference page.

Custom Animations

To use a custom animation built with the Articles/using animation editor|Animation Editor, locate its asset ID as follows:

  1. Click the button in the upper-left section of the Animation Editor window.
  1. Select Export from the context menu.
  2. Decide whether to create a new animation or overwrite an existing one.
  3. Once the upload is complete, copy the asset ID by clicking the “copy” button in the export window.

Changing a Default Animation

Once you have a valid animation asset ID, you can easily replace any of the default Roblox character animations:

  1. Insert a Script into ServerScriptService containing the following code:
  1. Starting on line 11, replace the desired default animation(s) by resetting the Animate script’s Animation/AnimationId|AnimationId values to the corresponding asset ID.

The following reference chart lists the default animations which can be replaced, for instance animateScript.idle.Animation1.AnimationId.

Character Action Animate Script References
Cheer animateScript.cheer.CheerAnim.AnimationId
Climb animateScript.climb.ClimbAnim.AnimationId
Dance animateScript.dance.Animation1.AnimationId animateScript.dance.Animation2.AnimationId animateScript.dance.Animation3.AnimationId animateScript.dance2.Animation1.AnimationId animateScript.dance2.Animation2.AnimationId animateScript.dance2.Animation3.AnimationId animateScript.dance3.Animation1.AnimationId animateScript.dance3.Animation2.AnimationId animateScript.dance3.Animation3.AnimationId
Fall animateScript.fall.FallAnim.AnimationId
Idle animateScript.idle.Animation1.AnimationId animateScript.idle.Animation2.AnimationId
Jump animateScript.jump.JumpAnim.AnimationId
Laugh animateScript.laugh.LaughAnim.AnimationId
Point animateScript.point.PointAnim.AnimationId
Run animateScript.run.RunAnim.AnimationId
Sit animateScript.sit.SitAnim.AnimationId
Swim animateScript.swim.Swim.AnimationId animateScript.swimidle.SwimIdle.AnimationId
Tools animateScript.toollunge.ToolLungeAnim.AnimationId animateScript.toolnone.ToolNoneAnim.AnimationId animateScript.toolslash.ToolSlashAnim.AnimationId
Walk animateScript.walk.WalkAnim.AnimationId
Wave animateScript.wave.WaveAnim.AnimationId

Using Animation Weight

Multiple animations may be used for the same action — note, for instance, that there are two default “idle” animations. When multiple animations exist for a character state, the Animate script will randomly choose which one to play, although the outcome can be influenced by changing the animation’s Weight value.

When assigning weight values, the probability of an animation being chosen is:

In the script below, this means that Animation1 will play ⅓ of the time the character is idle, while Animation2 will play ⅔ of the time.

Playing Animations Directly

In some cases you’ll need to play an animation directly from inside a script, for instance when the player presses a certain key, picks up a special item, etc.


To play an animation on a rig containing a Humanoid object, such as typical player characters, load the animation via Humanoid/LoadAnimation|Humanoid:LoadAnimation(). Consider the following LocalScript which may be placed in StarterPlayerScripts:

This code waits for the local player’s Humanoid object to load, then it creates a new Animation instance with the proper Animation/AnimationId|AnimationId. The animation is then loaded onto the humanoid, creating an AnimationTrack, and the track is played with AnimationTrack/Play|AnimationTrack:Play(). This script also utilizes the AnimationTrack/GetMarkerReachedSignal|GetMarkerReachedSignal() function to detect when a specific articles/using animation editor#animation-events|animation event occurs.


Playing animations on rigs that do not contain a Humanoid object must be done via an AnimationController. Consider this simple Script which is assumed to be a direct child of the rig:

  • animation
  • animate