One thing I could think of if it hasn’t been applied already is trying to find a way to affix the camera using a Part as the camera and then using a script to detect the right mouse button or controller stick input, you can change the camera as normal. I haven’t messed with controller scripting yet, but from my research you can just use UserInputService to detect movement with the right stick. Here’s the most basic way you could make it:
-- need this for if player wants to move cam
local UIS = game:GetService("UserInputService")
-- the camera
local plr = game.Players.LocalPlayer
local playerCam = game.Workspace.CurrentCamera
local fixedCam = plr.fixedCam --[[here I'm assuming I made a part parented to
the HumanoidRootPart with a weld constraint so the camera moves with the player]]
playerCam.CameraType = Enum.CameraType.Scriptable
playerCam.CFrame = fixedCam.CFrame
UIS.InputBegan:Connect(function(inputGiven)
local keycode = inputGiven.Enum.KeyCode -- made for brevity
if keycode == "MouseRightButton" or keycode == "Thumbstick2" then
-- move the fixed camera position to that direction
-- you'd do this by trying to track the mouse direction/stick direction
end
end)
That may be slightly wrong and if you need more guidance let me know. There could possibly be an easier way which I haven’t found or something which I’ve overlooked but hopefully this gets you started!
I’d refer to this as well for limiting camera rotation to get some inspiration as bonus suggestion!!