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

Crouch Script's Humanoid Properties Won't Change | Can someone help?

Asked by 2 years ago
Edited 2 years ago

I just started studying how to script from posts and youtube videos and decided to make a simple SprintAndCrouch script inside StarterGui.

The Sprint and Crouch script used to be separate but one doesn't seem to work when the other does. The crouch speed changes properly but the sprint won't, and vice versa. I then decided to make it into one to disable sprinting when crouched which worked but I still can't find a way to make the sprinting part and crouch part of the script work properly together. Crouch_Speed, JumpPower, and the CameraOffset won't change but the animation plays. The Output tab doesn't show anything wrong and I've also tried comparing it to other similar scripts.

Can someone explain what I did wrong or what else should I do???

The LocalScript is as follows: Added spaces for clarity

local UserInputService = game:GetService("UserInputService")

local Crouch_Speed = 5

local SPRINT_SPEED = 25

local DEFAULT_SPEED = 10

local MAXIMUM_STAMINA = 100

local STAMINA_DECREASE = 0.25

local SPRINT_KEY = Enum.KeyCode.LeftShift

local StaminaAmount = MAXIMUM_STAMINA

local JumpHeight = 1

local crouching = false

local sprinting = false

local Player = game.Players.LocalPlayer

local Character = Player.Character or Player.CharacterAdded:wait()

local Humanoid = Character:WaitForChild("Humanoid")

local Animation = script:WaitForChild("Animation")

local Track = Humanoid:LoadAnimation(Animation)

local Exterior = script.Parent.Exterior

local Bar = Exterior.Bar

UserInputService.InputBegan:Connect(function(Key, Processed)

if not Processed then 

    if Key.KeyCode == SPRINT_KEY and crouching == false then 

        sprinting = true

    end
end

end)

UserInputService.InputEnded:Connect(function(Key, Processed)

if not Processed then 

    if Key.KeyCode == SPRINT_KEY then

        sprinting = false

    end
end

end)

game["Run Service"].RenderStepped:Connect(function()

if StaminaAmount > 0 then

    if sprinting then 

        if Humanoid.MoveDirection.Magnitude > 0 then

            Humanoid.WalkSpeed = SPRINT_SPEED

            StaminaAmount -= STAMINA_DECREASE

        end
    else
        Humanoid.WalkSpeed = DEFAULT_SPEED

    end
else
    Humanoid.WalkSpeed = DEFAULT_SPEED

end



if StaminaAmount < MAXIMUM_STAMINA then 

    Exterior.Visible = true

    local Formula = (StaminaAmount/MAXIMUM_STAMINA)

    Bar:TweenSizeAndPosition(UDim2.new(1, 0, Formula, 0), UDim2.new(0, 0, 1-Formula, 0), Enum.EasingDirection.Out, Enum.EasingStyle.Linear, 0.1, true)

    if not sprinting then

        StaminaAmount += STAMINA_DECREASE

    end
else
    Exterior.Visible = false
end

end)

Track.Looped = true Track.Priority = Enum.AnimationPriority.Action

UserInputService.InputBegan:Connect(function(Key)

if Key.KeyCode == Enum.KeyCode.LeftControl and sprinting == false then

        crouching = true

        Humanoid.WalkSpeed = Crouch_Speed and Humanoid.JumpPower == JumpHeight

    Track:Play()

    end
    end

end)

UserInputService.InputEnded:Connect(function(Key)

if Key.KeyCode == Enum.KeyCode.LeftControl then

    crouching = false

    Track:Stop()

    end

end)

Answer this question