Character Camera Shaking Issue

Hi, I’m having an issue regarding my character’s camera. It seems that there is a very slight shakiness in first person view. Camera setup is custom and so is movement. Both are set using CFrame, but I cannot pinpoint the exact issue.

Portion of Camera Script

	deltax = userinput:GetMouseDelta().X * p_settings.mouse.MouseSensX
	deltay = userinput:GetMouseDelta().Y * p_settings.mouse.MouseSensY
	
	--X
	fake_cam.CFrame = ( CFrame.fromAxisAngle(Vector3.new(0,1,0), rad(-deltax))*(fake_cam.CFrame-fake_cam.CFrame.p))+fake_cam.CFrame.p
	
	local heady, headx, headz = (fake_cam.CFrame):toOrientation()
	
	if math.deg(heady) >= p_settings.cam.limit.y-1 then
		if deltay > 0 then
			fake_cam.CFrame = fake_cam.CFrame * CFrame.fromAxisAngle(Vector3.new(1,0,0),rad(-deltay))
		end
	elseif math.deg(heady) <= -(p_settings.cam.limit.y-1) then
		if deltay < 0 then
			fake_cam.CFrame = fake_cam.CFrame * CFrame.fromAxisAngle(Vector3.new(1,0,0),rad(-deltay))
		end
	else
		
		fake_cam.CFrame = fake_cam.CFrame * CFrame.fromAxisAngle(Vector3.new(1,0,0),rad(-deltay))
	end
	
	if p_settings.cam.firstperson == true then
		cam.CFrame = fake_cam.CFrame * CFrame.new(0,head.Size.Y/1.5,-head.Size.Z/2)
	else		
		cam.CFrame = fake_cam.CFrame * p_settings.cam.thirdperson_pos
	end

Portion of Movement Script

runservice.Heartbeat:connect(function(dt)	
	local movespeed = player_speed/60
	
	if movex ~= 0 or movez ~= 0 then
		idle_Anim:Stop()
		
		walk_Anim:AdjustSpeed((player_speed/p_settings.Movement.walkspeed)^.5)
		
		if player_speed < p_settings.Movement.runspeed then
			if walk_Anim.IsPlaying ~= true then
				run_Anim:Stop()
				walk_Anim:Play()
			end
		elseif run_Anim.IsPlaying ~= true then
			walk_Anim:Stop()
			run_Anim:Play()
		end
		
		is_moving = true
	else
		idle_Anim:Play()
		walk_Anim:Stop()
		run_Anim:Stop()
		
		is_moving = false
	end
	
	local heady, headx, headz = (root.CFrame:ToObjectSpace(fake_cam.CFrame)):toOrientation()
	
	--char_velocity.Velocity = (root.CFrame * CFrame.fromOrientation(0,headx,0)).lookVector * p_settings.Movement.walkspeed
	--root.CFrame = CFrame.new(root.CFrame.p + (head.CFrame.lookVector * Vector3.new(movez * p_settings.Movement.walkspeed, 0, movez * p_settings.Movement.walkspeed)) + (head.CFrame.rightVector * Vector3.new(movex * p_settings.Movement.walkspeed, 0, movex * p_settings.Movement.walkspeed))) * (root.CFrame - root.CFrame.p) 
	root.CFrame = CFrame.new(root.CFrame.p + ((root.CFrame * CFrame.fromOrientation(0,headx,0)).lookVector * (Vector3.new(movez * movespeed, 0, movez * movespeed)* (60/math.floor(1/dt))))+(head.CFrame.rightVector * (Vector3.new(movex * movespeed, 0, movex * movespeed))*(60/math.floor(1/dt)))) * (root.CFrame - root.CFrame.p) 
	--root.Velocity = ((head.CFrame.lookVector) * 200* movez * Vector3.new(1,0,1)) + ((head.CFrame.rightVector) * 200 *movex * Vector3.new(1,0,1))
	
	if client_settings.debug_enable == true then
		thing.CFrame = CFrame.new(root.CFrame.p, Vector3.new((root.CFrame.p + (head.CFrame.lookVector)).X, root.CFrame.p.Y, (root.CFrame.p + (head.CFrame.lookVector)).Z)) * CFrame.new(0,0,-5)
		thing2.CFrame = CFrame.new(root.CFrame.p, Vector3.new((root.CFrame.p + (head.CFrame.rightVector)).X, root.CFrame.p.Y, (root.CFrame.p + (head.CFrame.rightVector)).Z)) * CFrame.new(0,0,-5)
	end
end)

local held_keys = {}

game:GetService("UserInputService").InputBegan:connect(function(inputObject, gameProcessedEvent)
	table.insert(held_keys, inputObject.KeyCode)
	if inputObject.KeyCode == p_settings.controls.movements.forw then
		movez = 1
	end
	if inputObject.KeyCode ==  p_settings.controls.movements.back then
		movez = -1
	end
	if inputObject.KeyCode == p_settings.controls.movements.left then
		movex = -1
	end
	if inputObject.KeyCode ==  p_settings.controls.movements.right then
		movex = 1
	end
	if inputObject.KeyCode ==  p_settings.controls.movements.run then
		is_running = true
		spawn(function()
			for i = player_speed, p_settings.Movement.runspeed-1, 1 do
				if is_running == true then
					player_speed = player_speed+1
					wait(p_settings.Movement.runRate/(p_settings.Movement.runspeed-p_settings.Movement.walkspeed))
				else
					break
				end
			end
		end)
	end
end)

I think these two portions of the script might be the ones causing the issues, but l cannot find out why it’s the issue nor how to fix.