Read or move the current camera
camera-controlRead or write the local Roblox CurrentCamera CFrame, look-at target, FieldOfView, and CameraType to reproduce client-side camera movement and aim states without moving the character.
Instructions
WRITES LIVE GAME STATE. Read the active camera or set its CFrame, position/look-at target, FieldOfView, and optional CameraType. Use this to reproduce camera movement and aim states in the local client. The tool only changes the local CurrentCamera; it does not move the character or replicate a camera state to the server. For a one-shot read, use action=get. For movement, action=setCFrame requires position and either lookAt or rotation in degrees. Existing camera properties are returned so the change is auditable. Signature: { action: "get" | "setCFrame" | "setFov", position: { x: number, y: number, z: number }?, lookAt: { x: number, y: number, z: number }?, rotation: { pitch: number, yaw: number, roll: number }?, fov: number?, cameraType: "Fixed" | "Attach" | "Watch" | "Track" | "Follow" | "Custom" | "Scriptable" | "Orbital"?, threadContext: number? }. Phase: act; cost=medium; idempotency=contextual-write. Requires: active-client, explicit-mutation-approval. Produces: structured-result. Verify with: assert-state. Safety: MUTATING; writes live game/client state. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fov | No | FieldOfView for setFov or alongside setCFrame. | |
| action | Yes | Camera operation. | |
| lookAt | No | World target for setCFrame; creates CFrame.lookAt(position, lookAt). | |
| position | No | World position for setCFrame. | |
| rotation | No | Euler rotation in degrees for setCFrame when lookAt is not supplied. | |
| cameraType | No | Optional Enum.CameraType to apply after changing the CFrame. | |
| threadContext | No | Optional Roblox thread identity for this call; omit it to use the server default. |