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

How do I fix my sprinting animation playing while player is standing still?

Asked by 3 years ago

Basically, I have a sprint script which works well but whenever I hold the LeftShift the animation starts playing when the player is standing still.

Things I tried: Detecting when player is holding the W key, detecting player velocity, detecting if the HumanoidStateType is idle (there's no idle state)

Code:

local UserInputService = game:GetService("UserInputService");
local player = game.Players.LocalPlayer or game.Players.PlayerAdded:Wait();
local PlayerGui = player:WaitForChild("PlayerGui");
local Stamina = script.Parent:WaitForChild("Stamina");
local camera = game.Workspace.Camera
local Character = player.Character
local Anim = Instance.new('Animation')
local Humanoid = player.Character:WaitForChild("Humanoid")
Anim.AnimationId = 'rbxassetid://myid'
local PlayAnim = Character.Humanoid:LoadAnimation(Anim)
local cool = false;

UserInputService.InputBegan:Connect(function(sprint)
    if sprint.KeyCode == Enum.KeyCode.LeftShift then
        if not cool and (not player.Character:FindFirstChild("Stun")) then
            coroutine.wrap(function()
                cool = true;
                wait(0.85);
                cool = false;
            end)();
            wait(0.65)
            player.Backpack.Running.Value = true;
            PlayAnim:Play() -- plays the running animation
            return;
        end;
    else
        return;
    end;
end);
UserInputService.InputEnded:Connect(function(keyPress)
    if keyPress.KeyCode == Enum.KeyCode.LeftShift then
        player.Backpack.Running.Value = false;
        PlayAnim:Stop() -- stops the running animation
    end;
end);
local pog = false;
while wait() do
    if Stamina.Value > 0 and player.Backpack.Running.Value == true or player.Character:FindFirstChild("Stun") then
        local Humanoid = player.Character:WaitForChild("Humanoid");
        if Humanoid.MoveDirection == Vector3.new(0, 0, 0) then
            script.Parent.regenStaminaClient.Disabled = false;
        else
            script.Parent.regenStaminaClient.Disabled = true;
        end;
        Humanoid.WalkSpeed = 22; -- sprint walkspeed
        local playerStats = PlayerGui:WaitForChild("playerStats");
        if not pog and Humanoid.MoveDirection ~= Vector3.new(0, 0, 0) then
            Stamina.Value = Stamina.Value - 1.25;
            playerStats.Frame.Stamina.Bar:TweenSize(UDim2.new(Stamina.Value / 100, 0, 1, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Linear, 0.1, true); -- tween stamina bar
            wait(0.1);
            pog = false;
        end;
    elseif Stamina.Value <= 0 or player.Backpack.Running.Value == false or player.Character:FindFirstChild("Stun") then
        local Humanoid = player.Character:WaitForChild("Humanoid");
        player.Backpack.Running.Value = false;
        PlayAnim:Stop() -- stops the running anim
        Humanoid.WalkSpeed = 16; -- goes back to normal walkspeed
        script.Parent.regenStaminaClient.Disabled = false;
        end;
    end;

Answer this question