AnimationController
An object which allows animations to be loaded and applied to a character or model in place of a Humanoid. Creates an Animator and loads animations to update Motor6Ds of said character to react in the way that is described within the animation asset referenced by an Animation object.
Note that the LoadAnimation() method of this class has been deprecated. Instead, you should call Animator:LoadAnimation() directly from an Animator which can be created manually in Studio and directly referenced in scripts. When the deprecated method is called from an AnimationController, the controller itself does nothing regarding the animation intended to be loaded, except to automatically generate an Animator, onto which the loading call and animation ID are transferred. In this way, the AnimationController can be thought of as nothing more than an empty shell for a child Animator object which handles any actual functionality regarding animations.
Code Samples
This code sample demonstrates how an AnimationController can be used in place of a Humanoid for non player character objects.
A basic rig is loaded using InsertService and the default Humanoid is replaced with an AnimationController. An AnimationTrack is then created and played.
local InsertService = game:GetService("InsertService")
-- Load a model for demonstration
local npcModel = InsertService:LoadAsset(516159357):GetChildren()[1]
npcModel.Name = "NPC"
npcModel.PrimaryPart.Anchored = true
npcModel:SetPrimaryPartCFrame(CFrame.new(0, 5, 0))
npcModel.Parent = workspace
-- Replace the humanoid with an animationcontroller
local humanoid = npcModel:FindFirstChildOfClass("Humanoid")
humanoid:Destroy()
local animationController = Instance.new("AnimationController")
animationController.Parent = npcModel
-- Create and load an animation
local animation = Instance.new("Animation")
animation.AnimationId = "http://www.roblox.com/asset/?id=507771019" -- Roblox dance emote
local animationTrack = animationController:LoadAnimation(animation)
-- Play the animation
animationTrack:Play()
Summary
Methods
Returns an array of all AnimationTracks that are currently being played by the AnimationController.
Loads an Animation onto an AnimationController, returning an AnimationTrack that can be used for playback.
Events
Fires whenever the AnimationController begins playing an animation. It returns the AnimationTrack playing.
Properties
Methods
GetPlayingAnimationTracks
Returns an array of all AnimationTracks that are currently being played by the AnimationController.
A typical use for this function is stopping currently playing tracks using AnimationTrack:Stop().
Note this function will not return AnimationTracks that have loaded but are not playing. If the developer wishes to track these they will need to index them manually. See below for one example of how this could be achieved:
local animationTracks = {}local track = animationController:LoadTrack(animation)table.insert(animationTracks, track)
Returns
An array of playing AnimationTracks.
Code Samples
local function stopAllTracks(animationController)
for _, track in pairs(animationController:GetPlayingAnimationTracks()) do
track:Stop()
end
end
local animationController = script.Parent:FindFirstChild("AnimationController")
stopAllTracks(animationController)
LoadAnimation
This function loads an Animation onto an AnimationController, returning an AnimationTrack that can be used for playback.
Parameters
Returns
Code Samples
local InsertService = game:GetService("InsertService")
-- Load a model for demonstration
local npcModel = InsertService:LoadAsset(516159357):GetChildren()[1]
npcModel.Name = "NPC"
npcModel.PrimaryPart.Anchored = true
npcModel:SetPrimaryPartCFrame(CFrame.new(0, 5, 0))
npcModel.Parent = workspace
-- Replace the humanoid with an animationcontroller
local humanoid = npcModel:FindFirstChildOfClass("Humanoid")
humanoid:Destroy()
local animationController = Instance.new("AnimationController")
animationController.Parent = npcModel
-- Create and load an animation
local animation = Instance.new("Animation")
animation.AnimationId = "http://www.roblox.com/asset/?id=507771019" -- Roblox dance emote
local animationTrack = animationController:LoadAnimation(animation)
-- Play the animation
animationTrack:Play()
Events
AnimationPlayed
This event fires whenever the AnimationController begins playing an animation. It returns the AnimationTrack playing.
The AnimationTrack can be used to access the animation's playback functions and events. It will only fire for animations playing on the specific AnimationController.
See Humanoid.AnimationPlayed for the Humanoid variant of this function.
Parameters
The AnimationTrack that was played.