Turning the camera upside down while player still be able to control it?

Hello! So, I’m trying to set camera upside down but the player will still be in the control of the camera.

I found this script which does what I want, where I can control the camera while it’s upside down.

rs = game:GetService("RunService")
c = game.Workspace.CurrentCamera
numb = 100
    numb = numb - 1
	c.CoordinateFrame = c.CoordinateFrame
	* CFrame.Angles(0, 0, math.rad(180))
until numb == 0

But well, the problem with this script is I want to know the exact time when it will end. But since I can’t calculate it since it uses RenderStepped and it relies on user’s machine. I did another script like this

local cc = workspace.CurrentCamera
cc.CameraType = Enum.CameraType.Scriptable
cc.CFrame = cc.CFrame * CFrame.Angles(0,0,math.rad(180))

It works, but this time the player cannot control camera. I tried CameraSubject but it didn’t work.
I tried to find several posts about this, I found one (probably) which tells exact problem but it’s unanswered, there was other posts which tells me to use CameraSubject but as I saw it doesn’t works when CameraType is set to scriptable.

Any help is appreciated, thanks! :heart:

Dunno if you still need this but ok.
I think it’s better to do

rs = game:GetService("RunService")
c = game.Workspace.CurrentCamera

while true do
    c.CoordinateFrame = c.CoordinateFrame * CFrame.Angles(0, 0, math.rad(180))

then have another script disable that one after enough time has passed, example:

for _,plr in pairs(game.Players:GetChildren()) do

hope this helped even though you’ve probably figured it out by now :smile: