CameraType.Custom changes the current Camera.CFrame

Reproduction Steps

  1. Run any empty project in Studio
  2. Move the camera as far away (middle mouse button)
  3. Save the current Camera Cframe (Run this on command bar): a = workspace.Camera.CFrame
  4. Change the camera position/zoom to anything:
  5. Recover the original Camera CFrame: workspace.Camera.CFrame = a
  6. The camera position and angle are recovered, but not the camera distance/zoom:
  7. Change the CameraType to Scriptable and do the same step 5 workspace.Camera.CFrame = a.
    Now the Camera CFrame is completely recovered:
  8. Change the CameraType back to Custom:

Expected Behavior

  1. Changing a Camera CFrame when CameraType is Custom, doesn’t preserve the current Camera zoom/distance (stored in CFrame)
  2. Changing CameraType from Scriptable to Custom will lose the current Camera zoom/distance .

Actual Behavior
The opposite of what was mentioned above

Issue Area: Engine
Issue Type: Other
Impact: High
Frequency: Constantly


Thanks for the report! We’ve filed a ticket to our internal database and we’ll follow up when we have an update for you.


Just to clarify my bug report, the problem is that I CANNOT RECALL THE EXACT ZOOM OF THE CAMERA after saving the game.

I am saving the player position/orientation (CFrame) and the camera position/orientation/zoom (also CFrame) in the DataStore when the player exits the game.
When the player returns to the game, I can recover everything EXCEPT the zoom.