Players are getting different camera shakes when they play at around 60 FPS or more

The frequency at which the .RenderStepped event is fired is equal to the the client’s framerate, which is an important fact your script doesn’t seem to be taking into account. In order to to achieve a constant intensity of camera movement under all circumstances, you can read the dt (deltaTime) parameter of the RenderStepped event and multiply that with the smoothness variable that you’re using in your lerp function. Additionally, you should clamp the alpha argument of the lerp function to values less than or equal to 1. Under the assumption that the game is normally running at 60 FPS, your script could look like this:

local RunService = game:GetService("RunService")
local Players = game:GetService("Players")

local camera = workspace.CurrentCamera

local speed = 3
local intensity = 0.08
local smoothness = 0.2

RunService.RenderStepped:Connect(function(deltaTime)

	local t = tick()
	local x = math.cos(t * speed) * intensity 
	local y = math.sin(t * speed) * intensity
	local z = -10
		
	if Sprinting == true and hum.MoveDirection.Magnitude > 0 then 
		intensity = 0.5
		speed = 10
	else
		speed = 3
		intensity = 0.08
	end		

	local cf = CFrame.new(Vector3.new(x, y, 0), Vector3.new(x*0.95, y*0.95, z)) + camera.CFrame.Position
	camera.CFrame = camera.CFrame:Lerp(cf * camera.CFrame.Rotation, math.clamp(smoothness * deltaTime * 60, 0, 1))
end)
4 Likes