Run it
Copy the script and paste it into your executor.
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")
player = Players.LocalPlayer
camera = .CurrentCamera
OFFSET_FIRST_PERSON = .(, , -)
OFFSET_OTHER = .(, , )
SWAY_LIMIT =
FOV_ADD =
(a, b, t)
a + (b - a) * t
turn =
cameraOffset = .()
defaultFOV = camera.FieldOfView
(char)
humanoid = char:()
head = char:()
_, v (char:())
v:() v.Name ~=
v:():(()
v.LocalTransparencyModifier = v.Transparency
)
v.LocalTransparencyModifier = v.Transparency
RunService:(, .RenderPriority.Camera.Value + , (deltaTime)
char.Parent
zoom = (camera.CFrame.Position - head.Position).Magnitude
firstPerson = zoom <=
targetOffset = firstPerson OFFSET_FIRST_PERSON OFFSET_OTHER
humanoid.CameraOffset = humanoid.CameraOffset:(targetOffset, * deltaTime)
firstPerson
mouseDelta = UserInputService:()
turn = (turn, .(mouseDelta.X, -SWAY_LIMIT, SWAY_LIMIT), * deltaTime)
camera.CFrame = camera.CFrame * .(, , .(turn))
targetFOV = firstPerson (defaultFOV + FOV_ADD) defaultFOV
camera.FieldOfView = (camera.FieldOfView, targetFOV, * deltaTime)
)
player.Character
(player.Character)
player.CharacterAdded:((char)
RunService:()
(char)
)
StarterGui:(, {
Title = ;
Text = ;
Button1 = ;
Duration = .huge;
})
.(, ()
StarterGui:(, {
Title = ;
Text = ;
Button1 = ;
Duration = .huge;
})
)My first person camera script. I kinda stole some camera scripts from the internet and improved it myself so... credits to the original creators of the scripts here! Also this is open source, just in case you want to add this in your own game.. or smth like that.

Universal