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)
