Run it
Copy the script and paste it into your executor.
BASE_SPEED =
SPEED_MULTIPLIER =
MOUSE_SENSITIVITY =
TOGGLE_KEY = .KeyCode.P
ACCEL_KEY = .KeyCode.LeftControl
SHIFT_KEYS = {.KeyCode.LeftShift, .KeyCode.RightShift}
UserInputService = :()
RunService = :()
Players = :()
player = Players.LocalPlayer
camera = .CurrentCamera
isActive =
yaw =
pitch =
currentPosition = .zero
originalWalkSpeed =
originalJumpPower =
()
_, key (SHIFT_KEYS)
UserInputService:(key)
()
isActive = isActive
isActive
character = player.Character
character
humanoid = character:()
humanoid
originalWalkSpeed = humanoid.WalkSpeed
originalJumpPower = humanoid.JumpPower
humanoid.WalkSpeed =
humanoid.JumpPower =
camera.CameraType = .CameraType.Scriptable
UserInputService.MouseBehavior = .MouseBehavior.LockCenter
UserInputService.MouseIconEnabled =
cf = camera.CFrame
look = cf.LookVector
yaw = .(.(-look.X, -look.Z))
pitch = .(.(look.Y))
currentPosition = cf.Position
character = player.Character
character
humanoid = character:()
humanoid
humanoid.WalkSpeed = originalWalkSpeed
humanoid.JumpPower = originalJumpPower
camera.CameraType = .CameraType.Custom
UserInputService.MouseBehavior = .MouseBehavior.Default
UserInputService.MouseIconEnabled =
UserInputService.InputBegan:((input, gameProcessed)
gameProcessed
input.KeyCode == TOGGLE_KEY ()
()
)
UserInputService.InputChanged:((input, gameProcessed)
gameProcessed
isActive
input.UserInputType == .UserInputType.MouseMovement
yaw = yaw - input.Delta.X * MOUSE_SENSITIVITY
pitch = .(pitch - input.Delta.Y * MOUSE_SENSITIVITY, -, )
)
RunService.RenderStepped:((dt)
isActive
moveDirection = .zero
UserInputService:(.KeyCode.W) moveDirection += camera.CFrame.LookVector
UserInputService:(.KeyCode.S) moveDirection -= camera.CFrame.LookVector
UserInputService:(.KeyCode.A) moveDirection -= camera.CFrame.RightVector
UserInputService:(.KeyCode.D) moveDirection += camera.CFrame.RightVector
UserInputService:(.KeyCode.Q) moveDirection += .yAxis
UserInputService:(.KeyCode.E) moveDirection -= .yAxis
moveDirection.Magnitude >
moveDirection = moveDirection.Unit
speed = BASE_SPEED
UserInputService:(ACCEL_KEY)
speed *= SPEED_MULTIPLIER
currentPosition += moveDirection * speed * dt
rotation = .(.(pitch), .(yaw), )
camera.CFrame = .(currentPosition) * rotation
)Free Cam — smooth free camera for Roblox Toggles on Shift + P. Adds a full free-fly camera mode without affecting your character. Perfect for screenshots, map overview, video recording and level testing. Features: • Toggle on/off with Shift + P • Smooth mouse look (Yaw/Pitch) with proper delta handling • Fly with WASD relative to camera direction • Ascend/descend with Q/E along the global Y axis • x3 speed boost while holding Ctrl • Cursor is automatically hidden and locked to the screen center • Character stays in place and never gets stuck — walk speed and jump power are frozen while flying • Updated via RenderStepped — movement is FPS-independent • All settings (speed, sensitivity, keys) are exposed as variables at the top

Universal