Realistic First Person Script non dizzy version
Key RequiredUniversal

Realistic First Person Script non dizzy version

Universal Scriptallr359allr359 707 views 391 executesUpdated Feb 14, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•67 lines (1794 chars)
local player = game.Players.LocalPlayer
local camera = workspace.CurrentCamera
local runService = game:GetService("RunService")
local userInput = game:GetService("UserInputService")

camera.CameraType = Enum.CameraType.Scriptable
player.CameraMode = Enum.CameraMode.Classic

local sensitivity = 0.15
local pitch = 0
local yaw = 0

local function hideHead(character)
	for _, obj in pairs(character:GetDescendants()) do
		if obj:IsA("BasePart") and obj.Name == "Head" then
			obj.LocalTransparencyModifier = 1
		end

		if obj:IsA("Accessory") then
			local handle = obj:FindFirstChild("Handle")
			if handle then
				handle.LocalTransparencyModifier = 1
			end
		end
	end
end

local function setupCharacter(character)
	local humanoid = character:WaitForChild("Humanoid")
	local root = character:WaitForChild("HumanoidRootPart")
	local head = character:WaitForChild("Head")

	humanoid.AutoRotate = false
	hideHead(character)

	userInput.MouseBehavior = Enum.MouseBehavior.LockCenter
	userInput.MouseIconEnabled = false

	userInput.InputChanged:Connect(function(input)
		if input.UserInputType == Enum.UserInputType.MouseMovement then
			yaw -= input.Delta.X * sensitivity
			pitch -= input.Delta.Y * sensitivity
			pitch = math.clamp(pitch, -80, 80)
		end
	end)

	runService.RenderStepped:Connect(function()
		if humanoid.Health <= 0 then return end

		-- Rotate character ONLY on Y
		root.CFrame = CFrame.new(root.Position) * CFrame.Angles(0, math.rad(yaw), 0)

		-- Camera uses root rotation, pitch applied locally
		local baseCFrame = root.CFrame * CFrame.new(0, 1.5, 0)

		camera.CFrame =
			baseCFrame
			* CFrame.Angles(math.rad(pitch), 0, 0)
			* CFrame.new(0, 0, -0.4)
	end)
end

if player.Character then
	setupCharacter(player.Character)
end

player.CharacterAdded:Connect(setupCharacter)

Features & Information

It's the same as the other one but it's not dizzy. Realistic version: https://scriptblox.com/script/Universal-Script-Realistic-First-Person-Script-111413
#pov#firstperson

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts