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?