Camera movement help on gamepad

Input:

	local function movementInput(actionName, inputState, inputObject)
		if inputState == Enum.UserInputState.Change then
			if inputObject.UserInputType == Enum.UserInputType.MouseMovement or inputObject.UserInputType == Enum.UserInputType.Touch then
				camX -= inputObject.Delta.X / 4
				camY = math.clamp(camY - inputObject.Delta.Y * 0.4 / 75, -1.5, 1.5)
			elseif inputObject.KeyCode == Enum.KeyCode.Thumbstick2 then
				camX -= inputObject.Position.X * 2
				camY = math.clamp(camY + inputObject.Position.Y * 0.4 / 12.5, -1.5, 1.5)
			end
		end
	end
	
	
	Context:BindAction("MoveInputs", movementInput, false, Enum.UserInputType.MouseMovement,
		Enum.UserInputType.Touch,
		Enum.UserInputType.Focus)
	
	UIS.InputChanged:Connect(function(input, gpe)
		if input.UserInputType == Enum.UserInputType.Gamepad1 and input.KeyCode == Enum.KeyCode.Thumbstick2 then
			movementInput("", Enum.UserInputState.Change, input)
		end
	end)
	

Camera render:


					local swayZ = math.cos(tick() * 0.5) * 0.01

					local newCFrame = CFrame.new(HumanoidRootPart.Position + self.Offset + Vector3.new(0,swayZ,0)) * CFrame.Angles(0, math.rad(camX), 0) * CFrame.Angles(camY, 0, 0)
					local mainCFrame = newCFrame:PointToWorldSpace(Vector3.new(-self.LeanAmount, 0, 0))
					local focus = newCFrame:PointToWorldSpace(Vector3.new(self.Offset.X, self.Offset.Y, -100000))
					local targetCFrame = CFrame.lookAt(mainCFrame, focus) * CFrame.Angles(math.cos(tick()) * 0.005, 0, self.LeanAmount + self.ShakeAmount)

					Camera.CFrame = Camera.CFrame:Lerp(targetCFrame, Keybinds.CameraSway)

On PC/mobile it works fine.
On gamepad, its really weird.
It starts moving smoothly then goes slow then goes fast, very buggy.

Anyone know a fix?

1 Like