Skip to main content

Built-in Views

CameraService ships with six pre-configured views. Pass any of these names to :SetCameraView() to swap to them instantly.

CameraService:SetCameraView("FirstPerson")
CameraService:SetCameraView("ThirdPerson")
CameraService:SetCameraView("ShiftLock")
CameraService:SetCameraView("Cinematic")
CameraService:SetCameraView("FirstPersonVariant")
CameraService:SetCameraView("Default") -- restores Roblox's default camera

Default​

Hands control back to Roblox's stock camera.

BehaviorValue
CameraTypeEnum.CameraType.Custom
MouseBehaviorDefault

FirstPerson​

CameraService's version of the classic Roblox first-person view, with smoother motion. Avatar rotates with the camera. Character itself is hidden from view.

PropertyValue
CharacterVisibility"None"
Smoothness1
Zoom0
AlignChartrue
LockMousetrue
BodyFollowtrue
Wobble0.45

FirstPersonVariant​

For more grounded experiences, a first-person view that has view of the avatar's torso and limbs. Good for games where you'd want to see the player in some manner.

PropertyValue
CharacterVisibility"Body"
Smoothness0.35
OffsetCFrame.new(0, 0.2, 0.75)
LockMousetrue
Wobble2

ThirdPerson​

A polished version of Roblox's default third-person camera, with smoothing. It also includes slight camera wobbling response to the avatar's movements, and the character itself looking towards the current cursor position (R15.

PropertyValue
CharacterVisibility"All"
Smoothness0.7
Zoom10
MinZoom / MaxZoom5 / 15
BodyFollowtrue
Wobble0.4

ShiftLock​

Over-the-shoulder shift-lock with the mouse pinned to the center. The character aligns to the camera. CameraService's version of the Roblox shift-lock view.

PropertyValue
CharacterVisibility"All"
Smoothness0.7
Zoom7.5
OffsetCFrame.new(1.75, 0.5, 1)
LockMousetrue
AlignChartrue

Cinematic​

The camera view you might see in the demo! Cool for a cutscene view template. Silky, slow camera motion. It also comes with UI gutters animating in at the top and bottom of the screen when set and animate out when you switch away.

PropertyValue
CharacterVisibility"All"
Smoothness5
Zoom10 (locked)
AlignCharfalse
BodyFollowfalse
Wobble0

Defining your own view​

Use :CreateNewCameraView() to register a new view. Pass a settings table; anything you leave out is auto-filled with sensible defaults.

local info = {
Smoothness = 3,
CharacterVisibility = "All",
MinZoom = 15,
MaxZoom = 15,
Zoom = 15,
AlignChar = false,
Offset = CFrame.new(0, 0, 0),
LockMouse = false,
BodyFollow = false,
}

CameraService:CreateNewCameraView("TopDown2D", info)
CameraService:SetCameraView("TopDown2D")

-- Lock both axes for an old-school 2D feel
CameraService:LockCameraPanning(true, true, 90, 0)

See the full list of tweakable properties on the CameraService API page.