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

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
-- Ensure that the character's humanoid contains an "Animator" object
local humanoid = character:WaitForChild("Humanoid")
local animator = humanoid:WaitForChild("Animator")
-- Create a new "Animation" instance and assign an animation asset ID
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Load the animation onto the animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Play the animation track
kickAnimationTrack:Play()
-- If a named event was defined for the animation, connect it to "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)

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

local rig = script.Parent
-- Create a new "Animation" instance and assign an animation asset ID
local kickAnimation = Instance.new("Animation")
kickAnimation.AnimationId = "rbxassetid://2515090838"
-- Create a new "AnimationController" and "Animator"
local animationController = Instance.new("AnimationController")
animationController.Parent = rig
local animator = Instance.new("Animator")
animator.Parent = animationController
-- Load the animation onto the animator
local kickAnimationTrack = animator:LoadAnimation(kickAnimation)
-- Play the animation track
kickAnimationTrack:Play()
-- If a named event was defined for the animation, connect it to "GetMarkerReachedSignal()"
kickAnimationTrack:GetMarkerReachedSignal("KickEnd"):Connect(function(paramString)
print(paramString)
end)

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

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    -- Get animator on humanoid
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    -- Stop all animation tracks
    for _, playingTrack in animator:GetPlayingAnimationTracks() do
    playingTrack:Stop(0)
    end
    local animateScript = character:WaitForChild("Animate")
    --animateScript.run.RunAnim.AnimationId = "rbxassetid://"
    --animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"
    --animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation1.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation2.AnimationId = "rbxassetid://"
    --animateScript.fall.FallAnim.AnimationId = "rbxassetid://"
    --animateScript.swim.Swim.AnimationId = "rbxassetid://"
    --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    --animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"
    end
    local function onPlayerAdded(player)
    player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)
  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

    local Players = game:GetService("Players")
    local function onCharacterAdded(character)
    -- Get animator on humanoid
    local humanoid = character:WaitForChild("Humanoid")
    local animator = humanoid:WaitForChild("Animator")
    -- Stop all animation tracks
    for _, playingTrack in animator:GetPlayingAnimationTracks() do
    playingTrack:Stop(0)
    end
    local animateScript = character:WaitForChild("Animate")
    animateScript.run.RunAnim.AnimationId = "rbxassetid://656118852"
    --animateScript.walk.WalkAnim.AnimationId = "rbxassetid://"
    --animateScript.jump.JumpAnim.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation1.AnimationId = "rbxassetid://"
    --animateScript.idle.Animation2.AnimationId = "rbxassetid://"
    --animateScript.fall.FallAnim.AnimationId = "rbxassetid://"
    --animateScript.swim.Swim.AnimationId = "rbxassetid://"
    --animateScript.swimidle.SwimIdle.AnimationId = "rbxassetid://"
    --animateScript.climb.ClimbAnim.AnimationId = "rbxassetid://"
    end
    local function onPlayerAdded(player)
    player.CharacterAppearanceLoaded:Connect(onCharacterAdded)
    end
    Players.PlayerAdded:Connect(onPlayerAdded)

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

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

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 ActionAnimate Script Reference
RunanimateScript.run.RunAnim.AnimationId
WalkanimateScript.walk.WalkAnim.AnimationId
JumpanimateScript.jump.JumpAnim.AnimationId
Idle

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

FallanimateScript.fall.FallAnim.AnimationId
Swim

animateScript.swim.Swim.AnimationId

Swim (Idle)

animateScript.swimidle.SwimIdle.AnimationId

ClimbanimateScript.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