--- title: Customize the camera description: Explains how to configure an experience's camera settings. --- Roblox's built-in camera powers a default **third person** mode and an optional **first person** mode, so you don't need to build your own following camera. For more customized scenarios, you can adjust the default properties in `Class.Camera` or replace it entirely like for over-the-shoulder, isometric, and weapon scoping views. ## Basic settings You can configure common camera settings directly within Studio's `Class.StarterPlayer` object. These settings include [zoom distance](#zoom-distance) and various [camera](#camera-mode), [occlusion](#occlusion-mode), and [movement](#movement-mode) modes. 1. In the **Explorer** window, select the **StarterPlayer** object. StarterPlayer in Explorer 1. In the **Properties** window, scroll down to locate the **Camera** section. You can configure the following properties directly or through a script. Camera properties on StarterPlayer in Properties Window ### Zoom distance Together, `Class.StarterPlayer.CameraMaxZoomDistance|CameraMaxZoomDistance` and `Class.StarterPlayer.CameraMinZoomDistance|CameraMinZoomDistance` set the range in which players can zoom the camera in respect to their player character. Setting a very high maximum such as 500 allows players to zoom the camera far out in space. If you want to lock the camera to a specific distance away from the character and prevent zooming, set both of these properties to the same value. ```lua title="LocalScript - Camera Zoom Range" highlight="5,6" local Players = game:GetService("Players") local player = Players.LocalPlayer player.CameraMaxZoomDistance = 25 player.CameraMinZoomDistance = 50 ``` ### Camera mode The `Class.StarterPlayer.CameraMode|CameraMode` property sets the overall behavior of the camera between two options:
Setting Description
**Classic** The classic Roblox third-person camera which can be zoomed into first-person. Allows players to zoom in and out (unless zoom is locked) and rotate the camera around their character.
**LockFirstPerson** Locks the camera to first-person mode. When in this mode, all parts/elements of the player's character are invisible to them, except for equipped `Class.Tool|Tools`.
### Occlusion mode The `Class.StarterPlayer.DevCameraOcclusionMode|DevCameraOcclusionMode` property controls camera behavior when the player cannot see their character, such as when it's obscured by a `Class.BasePart`.
Setting Description
**Zoom** If the player's character moves behind an object with `Class.BasePart.Transparency|Transparency` lower than 0.25, the camera zooms in very close to the character so that it can be seen. Once the character moves back into a viewable position, the camera zooms back out.
**Invisicam** If the player's character moves behind an object with `Class.BasePart.Transparency|Transparency` lower than 0.75, the camera remains unmoved but the object becomes semi-transparent so that the character can be seen. Once the character moves back into a viewable position, the object returns to its normal opacity.
**Zoom** and **Invisicam** occlusion modes
### Movement mode The `Class.StarterPlayer.DevComputerCameraMovementMode|DevComputerCameraMovementMode` (computer) and `Class.StarterPlayer.DevTouchCameraMovementMode|DevTouchCameraMovementMode` (phone/tablet) determine how the player can move the camera around.
Setting Description
**UserChoice** The camera will move based on the player's in-experience camera settings.
**Classic** The camera remains at its [zoom distance](#zoom-distance), tracking the player's character as it moves around the world. Players can also pitch the camera view up/down and orbit it around their character.
**Follow** Similar to **Classic** but the camera may rotate slightly to face the player's character if they're moving in any direction that isn't parallel to the camera's facing direction.
**Orbital** The camera remains at a fixed zoom distance and tracks the player's character as it moves around the world. Players can orbit the camera around their character but can't pitch the view up or down.
**CameraToggle** Only functional on computers (not phones/tablets) through `Class.StarterPlayer.DevComputerCameraMovementMode|DevComputerCameraMovementMode`. When the player clicks the right mouse button, the camera toggles between **Classic** mode and a "free look" mode where moving the mouse looks around the world.
## Script the camera Each player [client](../projects/client-server.md) has its own `Class.Camera` object residing in the local `Class.Workspace`, accessible through the `Class.Workspace.CurrentCamera` property. You can override Roblox's default camera scripts by setting its `Class.Camera.CameraType|CameraType` to `Enum.CameraType|Scriptable` and then, most commonly, control the camera through the following properties.
Property Description
`Class.Camera.CFrame` The `Datatype.CFrame` of the camera. This is the most frequently used property for positioning and orienting a `Enum.CameraType|Scriptable` camera in an experience.
`Class.Camera.FieldOfView` The extent of the observable 3D space that can be seen on screen, measured between 1–120 degrees in the direction defined by `Class.Camera.FieldOfViewMode`. Default is 70.
`Class.Camera.CameraType` Toggles between the various camera behaviors outlined in `Enum.CameraType`, some of which mimic the selectable [movement modes](#movement-mode). Setting this to `Enum.CameraType|Scriptable` gives you full control of the camera.
`Class.Camera.Focus` The point in 3D space where the camera is looking. If you've set `Class.Camera.CameraType` to `Enum.CameraType|Scriptable`, you should update this property every frame because certain visuals are more detailed depending on how close they are to the focus point.