How to code idle animation?

Hello! I would like to know how to code the animations in ‘idle’ mode, someone could help me or say, please. :frowning:

1 Like

Assuming you already have the animations made, what you want is a “state-machine” that manages which animations are playing for any given set of criteria.

For example, your state machine might set the animation to the ‘idle’ animation if the player/humanoid/npc hasn’t moved for at least 10 seconds.

As a potentially useful side-note, state machines generally will have a hierarchy that determines which states (animations) have priority over others. This is useful for NPCs that won’t receive player-inputs.

1 Like

Oh, I understand. Could you give me a simple example? Please

Sure. Here’s a rough example of something that might work for a player. I’m not really familiar with animations in Roblox so take this code with a grain of salt, you will need to fix the code up for your own purposes. I just whipped this up for demonstration purposes.

local AnimationManager = {}

local Timer = require(--Timer Module, you can find these everywhere)

local animIdle = --idle animation path

local IDLE_TIME = 10
local idleTimer = Timer.new()
local someInputEvent = --path to input event

local function resetIdleTimer()
   idleTimer:stop()
   idleTimer:start(IDLE_TIME)
end

local function detectIdle(humanoid)
    local isIdling = humanoid:LoadAnimation(animIdle)
    while true do
        wait(.1) -- might be unnecessary 
        if not idleTimer:isRunning() and not isIdling:isRunning() then
            isIdling:Play()
        else
            isIdling:Pause()
        end
    end    
end

function AnimationManager.animStateMachine(humanoid)
    if humanoid then
        spawn(detectIdle(humanoid))
    end
end

someInputEvent.OnServerEvent:Connect(resetIdleTimer)

return AnimationManager

There may be significant errors with this code, again I encourage you to play around with this concept and experiment. Programming is more rewarding when you solve problems through trial-and-error on your own.

This demonstrates a situation where a player event will trigger a reset on the idle timer, preventing the idle animation from playing. If no input is received for 10 seconds, the the idle animation will loop forever.