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

Tool animations not switching?

Asked by 3 years ago

So I want to make a tool that has different idle, jumping, walking and landing animations from the default. These animations also use every part of the Roblox model. When I unequip the tool all the animations return to normal except when I am jumping. When I unequip while jumping the falling animation will play continuously.

Any advice to fix this?

Here is my code. If you find any other problems please point them out. I am still relatively new to Roblox scripting in general.

Note: Some of the code in this script was is an attacking and throwing event. I only copied parts that had to do with the animations. hopefully I didn't miss anything. ????

--Animations--
local AnimIds = {
    tool.KnifeIdle, 
    tool.KnifeRun,
    tool.KnifeJump,
    tool.KnifeFreeFall
}

Character:WaitForChild("Humanoid")
local Animations = {
    KnifeIdleAnimation = Character.Humanoid:LoadAnimation(AnimIds[1]),
    KnifeRunAnimation = Character.Humanoid:LoadAnimation(AnimIds[2]),
    KnifeJumpAnimation = Character.Humanoid:LoadAnimation(AnimIds[3]),
    KnifeFreeFallAnimation = Character.Humanoid:LoadAnimation(AnimIds[4])
}

--AnimationEvents--

local function Initialrunning(speed)
    if IsEquiped.Value == false then return end
    if speed > 1 then
        NewAnim = Animations.KnifeRunAnimation
        NewAnim:Play()
    else
        NewAnim = Animations.KnifeIdleAnimation
        NewAnim:Play()
    end
end

local function Running(speed)
    if IsEquiped.Value == false then return end
    if speed > 0.75 then
        if Character.Humanoid:GetState() ~= Enum.HumanoidStateType.Jumping or Character.Humanoid:GetState() ~= Enum.HumanoidStateType.Freefall  then
            if NewAnim == Animations.KnifeRunAnimation then return end
            OldAnim = NewAnim
            NewAnim = Animations.KnifeRunAnimation
            OldAnim:Stop()
            NewAnim:Play()
        end
    elseif speed < 0.75 then
        if Character.Humanoid:GetState() ~= Enum.HumanoidStateType.Jumping or Character.Humanoid:GetState() ~= Enum.HumanoidStateType.Freefall then
            if NewAnim == Animations.KnifeIdleAnimation then return end
            OldAnim = NewAnim
            NewAnim = Animations.KnifeIdleAnimation
            OldAnim:Stop()
            NewAnim:Play()
        end
    end
end

local function Jumping(isActive)
    if IsEquiped.Value == false then return end
    OldAnim = NewAnim
    NewAnim = Animations.KnifeJumpAnimation
    OldAnim:Stop()
    NewAnim:Play()
    wait(.3)
    OldAnim = NewAnim
    NewAnim = Animations.KnifeFreeFallAnimation
    OldAnim:Stop()
    NewAnim:Play()
end

local function Standing(oldState, NewState)
    if IsEquiped.Value == false then return end
    if NewState == Enum.HumanoidStateType.None then
        print("Standing")
    end
end

local function Freefall(isActive)
    if IsEquiped.Value == false then return end
    if (JumpAnimTime.Value <= 0) then
        if NewAnim == Animations.KnifeFreeFallAnimation then return end
        OldAnim = NewAnim
        NewAnim = Animations.KnifeFreeFallAnimation
        OldAnim:Stop()
        NewAnim:Play()
    end
end

--OnEquip&UnequipEvents--
tool.Equipped:Connect(function()
    IsEquiped.Value = true

    Character:WaitForChild("Humanoid")
    local HumRootPart = Character:WaitForChild("HumanoidRootPart")

    local Speed = HumRootPart.Velocity -- returns a vector3 so
    print(Speed)

    local SpeedX = math.abs(Speed.X)
    local SpeedY = math.abs(Speed.Y)
    local SpeedZ = math.abs(Speed.Z)

    if SpeedX > 2 or SpeedZ > 2 and SpeedY < 0.2 then
        NewAnim = Animations.KnifeRunAnimation
        NewAnim:Play()
    elseif SpeedY > 0.5 then
        NewAnim = Animations.KnifeFreeFallAnimation
        NewAnim:Play()
    else
        NewAnim =  Animations.KnifeIdleAnimation
        NewAnim:Play()
    end

    CAT:BindAction("ThrowEvent", Throw, false, Enum.UserInputType.MouseButton1)
    CAT:BindAction("AttackMode", InteractionKeys, false, Enum.KeyCode.Q)
end)

tool.Unequipped:Connect(function()
    IsEquiped.Value = false

    for index, value in pairs(Animations) do
        value:Stop()
    end

    CAT:UnbindAction("ThrowEvent")
    CAT:UnbindAction("AttackMode")
end)
--

Character.Humanoid.Running:Connect(Running)
Character.Humanoid.Jumping:Connect(Jumping)
Character.Humanoid.FreeFalling:Connect(Freefall)
Character.Humanoid.StateChanged:Connect(Standing)

UIS.InputBegan:Connect(InputBeginEvents)
UIS.InputEnded:Connect(InputEndedEvents)

Answer this question