Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How would I change the animate script to have various walking animations?

Asked by 5 years ago

I'm making a zombie that can lose his limbs, and for exemple, when he loses a leg, I want him to hop on one leg instead of continuing with his default run animation. I've tried editing the animate script with some ifs, but he just does nothing now when he loses a leg. So does anyone have an idea how I would go about this?

Below are the two functions I changed, I also added my "hop" animation to the animation table in the default "Animate" script by roblox.

function onRunning(speed)
    if speed > 0.5 then
        local scale = 16.0
        if script.Parent:findFirstChild("RightUpperLeg") == nil or script.Parent:findFirstChild("LeftUpperLeg") == nil then
            playAnimation("hop", 0.2, Humanoid)
        else
            playAnimation("walk", 0.2, Humanoid)
        end
        setAnimationSpeed(speed / scale)
        pose = "Running"
    else
        if emoteNames[currentAnim] == nil then
            playAnimation("idle", 0.2, Humanoid)
            pose = "Standing"
        end
    end
end

function stepAnimate(currentTime)
    local amplitude = 1
    local frequency = 1
    local deltaTime = currentTime - lastTick
    lastTick = currentTime

    local climbFudge = 0
    local setAngles = false

    if (jumpAnimTime > 0) then
        jumpAnimTime = jumpAnimTime - deltaTime
    end

    if (pose == "FreeFall" and jumpAnimTime <= 0) then
        playAnimation("fall", fallTransitionTime, Humanoid)
    elseif (pose == "Seated") then
        playAnimation("sit", 0.5, Humanoid)
        return
    elseif (pose == "Running") then
        if script.Parent:findFirstChild("RightUpperLeg") == nil or script.Parent:findFirstChild("LeftUpperLeg") == nil then
            playAnimation("hop", 0.2, Humanoid)
        else
            playAnimation("walk", 0.2, Humanoid)
        end
    elseif (pose == "Dead" or pose == "GettingUp" or pose == "FallingDown" or pose == "Seated" or pose == "PlatformStanding") then
        stopAllAnimations()
        amplitude = 0.1
        frequency = 1
        setAngles = true
    end

    -- Tool Animation handling
    local tool = Character:FindFirstChildOfClass("Tool")
    if tool and (tool.RequiresHandle or tool:FindFirstChild("Handle")) then

        local animStringValueObject = getToolAnim(tool)

        if animStringValueObject then
            toolAnim = animStringValueObject.Value
            -- message recieved, delete StringValue
            animStringValueObject.Parent = nil
            toolAnimTime = currentTime + .3
        end

        if currentTime > toolAnimTime then
            toolAnimTime = 0
            toolAnim = "None"
        end

        animateTool()       
    else
        stopToolAnimations()
        toolAnim = "None"
        toolAnimInstance = nil
        toolAnimTime = 0
    end
end

Answer this question