Camera Properties
| Properties | Details |
|---|---|
| CameraType | Defines the behavior of the camera (e.g., Fixed, Scriptable). |
| CFrame | Represents the position and orientation of the camera. |
| FieldOfView | Controls the zoom level of the camera. |
| Focus | The point in space the camera is focused on. |
CameraTypes
| CameraTypes | Details |
|---|---|
| Enum.CameraType.Fixed | The camera remains at a fixed position and orientation. |
| Enum.CameraType.Scriptable | The camera’s position and orientation can be controlled via scripts. |
| Enum.CameraType.Attach | The camera is attached to an object and follows its movements. |
| Enum.CameraType.Follow | The camera follows the player’s character, rotating to keep it in view. |
| Enum.CameraType.Track | The camera tracks the player’s character from a fixed position. |
| Enum.CameraType.Custom | The default camera behavior with customizable options. |
Setting Up a Fixed Camera
Roblox Studio
wait(2)
print("Camera position updating")
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Fixed
--Positioned 50 studs above the origin, looking at the origin
camera.CFrame = CFrame.new(Vector3.new(0, 50, 0), Vector3.new(0, 0, 0))
print("Camera position updated")Custom camera script that follows the player.
Roblox Studio
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Scriptable
game:GetService("RunService").RenderStepped:Connect(function()
local targetPart = character:WaitForChild("HumanoidRootPart")
local targetPosition = targetPart.Position + Vector3.new(0, 10, 10) -- Offset above and behind the player
camera.CFrame = CFrame.new(targetPosition, targetPart.Position) -- Camera looks at the player
end)Switch camera
Roblox Studio
local function switchToCamera(cameraName)
local camera = workspace:FindFirstChild(cameraName)
if camera then
workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
workspace.CurrentCamera.CFrame = camera.CFrame
print("Switched to camera: " .. cameraName)
else
warn("Camera not found: " .. cameraName)
end
end
local topDownCamera = Instance.new("Camera")
topDownCamera.Name = "TopDownCamera"
topDownCamera.CFrame = CFrame.new(Vector3.new(0, 50, 0), Vector3.new(0, 0, 0))
topDownCamera.Parent = workspace
switchToCamera("Camera")
local UserInputService = game:GetService("UserInputService")
UserInputService.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.L then
switchToCamera("TopDownCamera")
elseif input.KeyCode == Enum.KeyCode.P then
workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
workspace.CurrentCamera.CFrame = workspace.Camera.CFrame
print("Switched back to default Camera")
end
end)Switch camera with TweenService
Roblox Studio
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
-- Function to switch to a specific camera by name with tweening
local function switchToCamera(cameraName)
local camera = workspace:FindFirstChild(cameraName)
if camera then
workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable
-- Create the tween for camera transition
local tweenInfo = TweenInfo.new(
2, -- Time (seconds)
Enum.EasingStyle.Quad,
Enum.EasingDirection.Out
)
local goal = {}
goal.CFrame = camera.CFrame
local tween = TweenService:Create(workspace.CurrentCamera, tweenInfo, goal)
tween:Play()
print("Switched to camera: " .. cameraName)
else
warn("Camera not found: " .. cameraName)
end
end
-- Create a new camera at start that looks at the origin from above (y=50)
local topDownCamera = Instance.new("Camera")
topDownCamera.Name = "TopDownCamera"
topDownCamera.CFrame = CFrame.new(Vector3.new(0, 50, 0), Vector3.new(0, 0, 0))
topDownCamera.Parent = workspace
-- Set "Camera" as the default camera
workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
workspace.CurrentCamera.CFrame = workspace.Camera.CFrame
-- Key press detection
UserInputService.InputBegan:Connect(function(input)
if input.KeyCode == Enum.KeyCode.L then
switchToCamera("TopDownCamera")
elseif input.KeyCode == Enum.KeyCode.P then
-- Revert to the default camera instantly
local defaultCamera = workspace:FindFirstChild("Camera")
if defaultCamera then
workspace.CurrentCamera.CameraType = Enum.CameraType.Custom
workspace.CurrentCamera.CFrame = defaultCamera.CFrame
print("Switched back to default Camera")
end
end
end)Looking for more useful tools to boost your productivity?
Explore More ToolsIf you found this tutorial helpful and would like to support my work, please consider buying me a coffee.
Thank you very much for your support!
Buy me a coffee


