Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
player = Players.LocalPlayer
camera = .CurrentCamera
PlayerModule = (player:():())
controls = PlayerModule:()
tool = .()
tool.Name =
tool.RequiresHandle =
tool.Parent = player:()
gui = .()
gui.Name =
gui.ResetOnSpawn =
gui.Enabled =
gui.Parent = player:()
tpButton = .()
tpButton.Name =
tpButton.Size = .(, , , )
tpButton.Position = .(, -, , -)
tpButton.BackgroundColor3 = .(, , )
tpButton.BackgroundTransparency =
tpButton.TextColor3 = .(, , )
tpButton.Font = .Font.GothamBold
tpButton.Text =
tpButton.TextScaled =
tpButton.Parent = gui
corner = .()
corner.CornerRadius = .(, )
corner.Parent = tpButton
draggingUI =
dragStart =
startPos =
hasDragged =
tpButton.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
draggingUI =
hasDragged =
dragStart = input.Position
startPos = tpButton.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
draggingUI =
)
)
UserInputService.InputChanged:((input)
draggingUI (input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch)
delta = input.Position - dragStart
delta.Magnitude >
hasDragged =
tpButton.Position = .(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
)
tpButton.Activated:(()
hasDragged
char = player.Character
char char:()
char.HumanoidRootPart.CFrame = camera.CFrame
)
isEquipped =
speed =
pitch =
yaw =
upValue =
downValue =
draggingCamera =
UserInputService.InputBegan:((input, gameProcessed)
gameProcessed
input.KeyCode == .KeyCode.E upValue =
input.KeyCode == .KeyCode.Q downValue =
input.UserInputType == .UserInputType.MouseButton2 input.UserInputType == .UserInputType.Touch
draggingCamera =
)
UserInputService.InputEnded:((input)
input.KeyCode == .KeyCode.E upValue =
input.KeyCode == .KeyCode.Q downValue =
input.UserInputType == .UserInputType.MouseButton2 input.UserInputType == .UserInputType.Touch
draggingCamera =
)
UserInputService.InputChanged:((input, gameProcessed)
gameProcessed input.UserInputType == .UserInputType.Touch
isEquipped
isMouse = input.UserInputType == .UserInputType.MouseMovement
isTouch = input.UserInputType == .UserInputType.Touch
isTouch (isMouse UserInputService.MouseBehavior == .MouseBehavior.LockCenter) (isMouse draggingCamera)
delta = input.Delta
sensitivity =
yaw = yaw - .(delta.X * sensitivity)
pitch = .(pitch - .(delta.Y * sensitivity), -.(), .())
)
(dt)
isEquipped
moveVector = controls:()
totalMove = .(moveVector.X, upValue - downValue, moveVector.Z)
totalMove.Magnitude >
totalMove = totalMove.Unit * speed * dt
rotationCFrame = .(, yaw, ) * .(pitch, , )
camera.CFrame = .(camera.CFrame.Position) * rotationCFrame * .(totalMove)
tool.Equipped:(()
isEquipped =
gui.Enabled =
char = player.Character
char
animateScript = char:()
animateScript
animateScript.Enabled =
humanoid = char:()
humanoid
animator = humanoid:()
animator
_, track (animator:())
track:()
char:()
char.HumanoidRootPart.Anchored =
camera.CameraType = .CameraType.Scriptable
cx, cy, cz = camera.CFrame:()
pitch = cx
yaw = cy
UserInputService.KeyboardEnabled UserInputService.MouseEnabled
UserInputService.MouseBehavior = .MouseBehavior.LockCenter
RunService:(, .RenderPriority.Camera.Value + , onRenderStep)
)
tool.Unequipped:(()
isEquipped =
gui.Enabled =
char = player.Character
char
animateScript = char:()
animateScript
animateScript.Enabled =
char:()
char.HumanoidRootPart.Anchored =
camera.CameraType = .CameraType.Custom
camera.CameraSubject = player.Character player.Character:()
UserInputService.MouseBehavior = .MouseBehavior.Default
RunService:()
)Good free cam open source script

Universal