I have 2 scripts in StarterPlayerScripts for crouching and sprinting. These work ABSOLUTELY FINE in studio, with no issues. But never works in the game! Does anyone have any solutions?
Sprint
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local Camera = workspace.CurrentCamera
local DefaultFieldOFView = Camera.FieldOfView
local DefaultWalkingSpeed = Humanoid.WalkSpeed
local Speed = 25
local Key = Enum.KeyCode.LeftShift
local TweenSpeed = 0.2
local SprintingTween = TweenService:Create(Camera, TweenInfo.new(TweenSpeed), { FieldOfView = DefaultFieldOFView + (Speed / 5) })
local WalkingTween = TweenService:Create(Camera, TweenInfo.new(TweenSpeed), { FieldOfView = DefaultFieldOFView })
local sprinting = false
local function sprint(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
if sprinting == false then
sprinting = true
script.IsSprinting.Value = true
Humanoid.WalkSpeed = Speed
else
sprinting = false
script.IsSprinting.Value = false
Humanoid.WalkSpeed = DefaultWalkingSpeed
end
end
end
local contextActionService = game:GetService("ContextActionService")
local sprintButton = contextActionService:BindAction("Sprint", sprint, true)
contextActionService:SetPosition("Sprint", UDim2.new(0.72, -85, 0.20, -85))
contextActionService:SetImage("Sprint", "rbxassetid://9641437468")
UserInputService.InputBegan:Connect(function(Input, Processed)
if not Processed then
if Input.UserInputType == Enum.UserInputType.Keyboard and Input.KeyCode == Key and script.Parent.CrouchScriptMain.IsCrouching.Value == false then
script.IsSprinting.Value = true
Humanoid.WalkSpeed = Speed
end
end
end)
UserInputService.InputEnded:Connect(function(Input)
if Input.UserInputType == Enum.UserInputType.Keyboard and Input.KeyCode == Key and script.Parent.CrouchScriptMain.IsCrouching.Value == false then
script.IsSprinting.Value = false
Humanoid.WalkSpeed = DefaultWalkingSpeed
end
end)
script.Parent.CrouchScriptMain.IsCrouching:GetPropertyChangedSignal("Value"):Connect(function()
if script.Parent.CrouchScriptMain.IsCrouching.Value == true then
sprinting = false
Humanoid.WalkSpeed = DefaultWalkingSpeed
WalkingTween:Play()
end
end)
Crouch
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local Player = Players.LocalPlayer
local Character = Player.Character or Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local DefaultWalkingSpeed = Humanoid.WalkSpeed
local Key = Enum.KeyCode.C
local Speed = 5
local crouched = false
local crouchAnim = nil
local contextActionService = game:GetService("ContextActionService")
local function crouch(actionName, inputState, inputObject)
if inputState == Enum.UserInputState.Begin then
if crouched == false then
crouched = true
script.IsCrouching.Value = true
Humanoid.WalkSpeed = Speed
crouchAnim:Play()
else
crouched = false
script.IsCrouching.Value = false
Humanoid.WalkSpeed = DefaultWalkingSpeed
crouchAnim:Stop()
end
end
end
local mobileHolsterButton = contextActionService:BindAction("Crouch", crouch, true)
contextActionService:SetPosition("Crouch", UDim2.new(0.72, -85, 0.20, -25))
contextActionService:SetImage("Crouch", "rbxassetid://9640894555")
UserInputService.InputBegan:Connect(function(Input, Processed)
if not Processed then
if Input.UserInputType == Enum.UserInputType.Keyboard and Input.KeyCode == Key then
if crouched == false then
crouched = true
script.IsCrouching.Value = true
Humanoid.WalkSpeed = Speed
crouchAnim:Play()
else
crouched = false
script.IsCrouching.Value = false
Humanoid.WalkSpeed = DefaultWalkingSpeed
crouchAnim:Stop()
end
end
end
end)
wait(1)
crouchAnim = game.Players.LocalPlayer.Character.Humanoid.Animator:LoadAnimation(game.ReplicatedStorage.Anims.Crouch)