Setting 3rd Person Without Assigning New CFrame

I want to get the CFrame value for setting the camera to 3rd person like if you zoom out.
Basically I want to zoom the camera out and not change the orientation of the camera.

I have a couple ideas but they are very complicated. I’m wondering if there is a simple fix for doing this.
And I have yet to’ve found a solution or even someone covering this.

Best Image Ever:
Test

You can get the cameras CFrame and simply subtract the position by the negative look vector:

local Camera = workspace.CurrentCamera
local lookVector = Camera.CFrame.LookVector
local magnitude = 4 --> how many studs back you want the camera to go

Camera.CFrame = Camera.CFrame - lookVector

image

The Camera CFrame Doesn’t Budge.

Make sure the set the camera type to scriptable.

Yes, but then I’m unable to move.

And what do I do with the magnitude?

Connect the function to a RenerStepped so it updates every frame.

local cam = workspace.CurrentCamera
local distance = 5

game:GetService'RunService'.RenderStepped:Connect(function()
	local zv = cam.CFrame.ZVector*distance
	cam.CFrame += zv
end)

I want to zoom the player out once. Not limit them from zooming in.

I tried using your method without the RenderStepped Connection and this happened: