local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local function startClientAccel(char) local humanoid = char:WaitForChild("Humanoid") local hrp = char:WaitForChild("HumanoidRootPart") local speed = 0 -- i recommend u use 0.2 or 0.1, but i chose 0 since its universal local maxSpeed = 27 -- Change if u wanna :3 local accel = 0.15 -- how fast it uhm accelerates local decel = 23 -- when u stop, this is the oppisite of accel local moving = false humanoid:GetPropertyChangedSignal("MoveDirection"):Connect(function() moving = humanoid.MoveDirection.Magnitude > 0 end) RunService.RenderStepped:Connect(function(dt) if not hrp or not hrp.Parent then return end if moving then speed = math.min(speed + accel * dt * 10, maxSpeed) else speed = math.max(speed - decel * dt * 10, 0) end if speed > 0.1 then -- Use MoveDirection instead of camera local moveDir = humanoid.MoveDirection if moveDir.Magnitude > 0 then local offset = moveDir.Unit * speed * dt hrp.CFrame = hrp.CFrame + offset end end end) end if player.Character then startClientAccel(player.Character) end player.CharacterAdded:Connect(startClientAccel)