Using Animations

Once you have created an animation, you need to use scripts to include them in your experience. You can either play animations manually from scripts or replace default animations for player characters.

Playing Animations From Scripts

In some cases, you'll need to play an animation directly from inside a script, such as when a user presses a certain key or picks up a special item.

Humanoids

To play an animation on a rig containing a Humanoid object, such as typical playable characters, follow this basic pattern:

  1. Ensure that the local player's Humanoid contains an Animator object.
  2. Create a new Animation instance with the proper AnimationId.
  3. Load the animation via Animator:LoadAnimation() to create an AnimationTrack.
  4. Play the track with AnimationTrack:Play().

For example, the following LocalScript, when placed in StarterPlayerScripts, loads a "kick" animation onto the player's character and plays it. The script also utilizes the GetMarkerReachedSignal() method to detect when a specific animation event occurs.

LocalScript - Play Custom Animation on Player Character

1local Players = game:GetService("Players")
2
3local player = Players.LocalPlayer
4local character = player.Character
5if not character or not character.Parent then
6 character = player.CharacterAdded:Wait()
7end
8
9-- Ensure that the character's humanoid contains an "Animator" object
10local humanoid = character:WaitForChild("Humanoid")
11local animator = humanoid:WaitForChild("Animator")
12
13-- Create a new "Animation" instance and assign an animation asset ID
14local kickAnimation = Instance.new("Animation")
15kickAnimation.AnimationId = "rbxassetid://2515090838"
16
17-- Load the animation onto the animator
18local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
19
20-- Play the animation track
21kickAnimationTrack:Play()
22
23-- If a named event was defined for the animation, connect it to "GetMarkerReachedSignal()"
24kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
25 print(paramString)
26end)
27

Non-Humanoids

To play animations on rigs that do not contain a Humanoid, you must create an AnimationController with a child Animator. For example, the following Script (assumed to be a direct child of the rig) loads a "kick" animation and plays it.

Script - Play Custom Animation on Character Rig

1local rig = script.Parent
2
3-- Create a new "Animation" instance and assign an animation asset ID
4local kickAnimation = Instance.new("Animation")
5kickAnimation.AnimationId = "rbxassetid://2515090838"
6
7-- Create a new "AnimationController" and "Animator"
8local animationController = Instance.new("AnimationController")
9animationController.Parent = rig
10local animator = Instance.new("Animator")
11animator.Parent = animationController
12
13-- Load the animation onto the animator
14local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
15
16-- Play the animation track
17kickAnimationTrack:Play()
18
19-- If a named event was defined for the animation, connect it to "GetMarkerReachedSignal()"
20kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
21 print(paramString)
22end)
23

Replacing Default Animations

By default, Roblox player characters include common animations like running, climbing, swimming, and jumping. You can replace these default animations with animations from the catalog or with your own custom animations.

  1. Obtain the asset ID of the new animation as follows:

  2. In the Explorer window, add a new Script to ServerScriptService.

    1. Hover over ServerScriptService and click the ⊕ button.
    2. From the contextual menu, insert a Script.
  3. In the new script, paste the following code:

    Script - Replace Default Character Animations

    1local Players = game:GetService("Players")
    2
    3local function onCharacterAdded(character)
    4 -- Get animator on humanoid
    5 local humanoid = character:WaitForChild("Humanoid")
    6 local animator = humanoid:WaitForChild("Animator")
    7
    8 -- Stop all animation tracks
    9 for _, playingTrack in pairs(animator:GetPlayingAnimationTracks()) do
    10 playingTrack:Stop(0)
    11 end
    12
    13 local animateScript = character:WaitForChild("Animate")
    14 --animateScript.run.RunAnim.AnimationId = "rbxassetid://"
    15 --animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"
    16 --animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"
    17 --animateScript.idle.Animation1.AnimationId = "rbxassetid://"
    18 --animateScript.idle.Animation2.AnimationId = "rbxassetid://"
    19 --animateScript.fall.FallAnim.AnimationId = "rbxassetid://"
    20 --animateScript.swim.Swim.AnimationId = "rbxassetid://"
    21 --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    22 --animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"
    23end
    24
    25local function onPlayerAdded(player)
    26 player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    27end
    28
    29Players.PlayerAdded:Connect(onPlayerAdded)
    30
  4. For each line that references a default character animation, uncomment it and paste the replacement ID after rbxassetid://. For example, to change the default run animation to the Ninja Run variant:

    Script - Replace Default Character Animations

    1local Players = game:GetService("Players")
    2
    3local function onCharacterAdded(character)
    4 -- Get animator on humanoid
    5 local humanoid = character:WaitForChild("Humanoid")
    6 local animator = humanoid:WaitForChild("Animator")
    7
    8 -- Stop all animation tracks
    9 for _, playingTrack in pairs(animator:GetPlayingAnimationTracks()) do
    10 playingTrack:Stop(0)
    11 end
    12
    13 local animateScript = character:WaitForChild("Animate")
    14 animateScript.run.RunAnim.AnimationId = "rbxassetid://656118852"
    15 --animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"
    16 --animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"
    17 --animateScript.idle.Animation1.AnimationId = "rbxassetid://"
    18 --animateScript.idle.Animation2.AnimationId = "rbxassetid://"
    19 --animateScript.fall.FallAnim.AnimationId = "rbxassetid://"
    20 --animateScript.swim.Swim.AnimationId = "rbxassetid://"
    21 --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    22 --animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"
    23end
    24
    25local function onPlayerAdded(player)
    26 player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    27end
    28
    29Players.PlayerAdded:Connect(onPlayerAdded)
    30

Setting Animation Weights

You can use multiple animations for the same action. For example, there are two idle variations in the code sample for replacing default animations.

When multiple animations exist for a character state, the Animate script randomly chooses which one to play, but you can influence the outcome by setting the animation's Weight value under the following formula:

  • animation weight / total weight of all state animations

In the following example, idle.Animation1 will play ⅓ of the time the character is idle, while idle.Animation2 will play ⅔ of the time.

Script - Replace Default Character Animations

1 animateScript.idle.Animation1.AnimationId = "rbxassetid://656117400"
2 animateScript.idle.Animation2.AnimationId = "rbxassetid://656118341"
3 animateScript.idle.Animation1.Weight.Value = 5
4 animateScript.idle.Animation2.Weight.Value = 10
5

Animation References

Default Character Animations

The following table contains all of the default character animations that you can replace with catalog animations or your own custom animations. Note that Idle has two variations which you can weight to play more or less frequently.

Character Action Animate Script Reference
Run animateScript.run.RunAnim.AnimationId
Walk animateScript.walk.WalkAnim.AnimationId
Jump animateScript.jump.JumpAnim.AnimationId
Idle

animateScript.idle.Animation1.AnimationId
animateScript.idle.Animation2.AnimationId

Fall animateScript.fall.FallAnim.AnimationId
Swim

animateScript.swim.Swim.AnimationId

Swim (Idle)

animateScript.swimidle.SwimIdle.AnimationId

Climb animateScript.climb.ClimbAnim.AnimationId

Catalog Animations

When using avatar animation bundles to replace default animations, use the following references for the respective asset IDs. For example, if you want to apply the Ninja Jump animation, use 656117878. Note that Idle has multiple variations.

Astronaut
Run
891636393
Walk
891636393
Jump
891627522
Idle
891621366, 891633237, 1047759695
Fall
891617961
Swim
891639666
Swim (Idle)
891663592
Climb
891609353
Bubbly
Run
910025107
Walk
910034870
Jump
910016857
Idle
910004836, 910009958, 1018536639
Fall
910001910
Swim
910028158
Swim (Idle)
910030921
Climb
909997997
Cartoony
Run
742638842
Walk
742640026
Jump
742637942
Idle
742637544, 742638445, 885477856
Fall
742637151
Swim
742639220
Swim (Idle)
742639812
Climb
742636889
Elder
Run
845386501
Walk
845403856
Jump
845398858
Idle
845397899, 845400520, 901160519
Fall
845396048
Swim
845401742
Swim (Idle)
845403127
Climb
845392038
Knight
Run
657564596
Walk
657552124
Jump
658409194
Idle
657595757, 657568135, 885499184
Fall
657600338
Swim
657560551
Swim (Idle)
657557095
Climb
658360781
Levitation
Run
616010382
Walk
616013216
Jump
616008936
Idle
616006778, 616008087, 886862142
Fall
616005863
Swim
616011509
Swim (Idle)
616012453
Climb
616003713
Mage
Run
707861613
Walk
707897309
Jump
707853694
Idle
707742142, 707855907, 885508740
Fall
707829716
Swim
707876443
Swim (Idle)
707894699
Climb
707826056
Ninja
Run
656118852
Walk
656121766
Jump
656117878
Idle
656117400, 656118341, 886742569
Fall
656115606
Swim
656119721
Swim (Idle)
656121397
Climb
656114359
Pirate
Run
750783738
Walk
750785693
Jump
750782230
Idle
750781874, 750782770, 885515365
Fall
750780242
Swim
750784579
Swim (Idle)
750785176
Climb
750779899
Robot
Run
616091570
Walk
616095330
Jump
616090535
Idle
616088211, 616089559, 885531463
Fall
616087089
Swim
616092998
Swim (Idle)
616094091
Climb
616086039
Rthro
Run
2510198475
Walk
2510202577
Jump
2510197830
Idle
2510197257, 2510196951, 3711062489
Fall
2510195892
Swim
2510199791
Swim (Idle)
2510201162
Climb
2510192778
Stylish
Run
616140816
Walk
616146177
Jump
616139451
Idle
616136790, 616138447, 886888594
Fall
616134815
Swim
616143378
Swim (Idle)
616144772
Climb
616133594
Superhero
Run
616117076
Walk
616122287
Jump
616115533
Idle
616111295, 616113536, 885535855
Fall
616108001
Swim
616119360
Swim (Idle)
616120861
Climb
616104706
Toy
Run
782842708
Walk
782843345
Jump
782847020
Idle
782841498, 782845736, 980952228
Fall
782846423
Swim
782844582
Swim (Idle)
782845186
Climb
782843869
Vampire
Run
1083462077
Walk
1083473930
Jump
1083455352
Idle
1083445855, 1083450166, 1088037547
Fall
1083443587
Swim
1083464683
Swim (Idle)
1083467779
Climb
1083439238
Werewolf
Run
1083216690
Walk
1083178339
Jump
1083218792
Idle
1083195517, 1083214717, 1099492820
Fall
1083189019
Swim
1083222527
Swim (Idle)
1083225406
Climb
1083182000
Zombie
Run
616163682
Walk
616168032
Jump
616161997
Idle
616158929, 616160636, 885545458
Fall
616157476
Swim
616165109
Swim (Idle)
616166655
Climb
616156119