Legends Improved First Person SWAYLESS
Key RequiredUniversal

Legends Improved First Person SWAYLESS

Universal Scripttheobscured102theobscured102 361 views 1.4K executesUpdated Apr 11, 2026
Unrated
00
Lua Script•69 lines (2052 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local StarterGui = game:GetService("StarterGui")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local OFFSET_FIRST_PERSON = Vector3.new(0, 0, -0.7)
local OFFSET_OTHER = Vector3.new(0, 0, 0)
local FOV_ADD = 10

local function lerp(a, b, t)
	return a + (b - a) * t
end

local defaultFOV = camera.FieldOfView

local function setupCharacter(char)
	local humanoid = char:WaitForChild("Humanoid")
	local head = char:WaitForChild("Head")

	for _, v in ipairs(char:GetChildren()) do
		if v:IsA("BasePart") and v.Name ~= "Head" then
			v:GetPropertyChangedSignal("LocalTransparencyModifier"):Connect(function()
				v.LocalTransparencyModifier = v.Transparency
			end)
			v.LocalTransparencyModifier = v.Transparency
		end
	end

	RunService:BindToRenderStep("CameraHandler", Enum.RenderPriority.Camera.Value + 1, function(deltaTime)
		if not char.Parent then return end

		local zoom = (camera.CFrame.Position - head.Position).Magnitude
		local firstPerson = zoom <= 1

		local targetOffset = firstPerson and OFFSET_FIRST_PERSON or OFFSET_OTHER
		humanoid.CameraOffset = humanoid.CameraOffset:Lerp(targetOffset, 5 * deltaTime)

		local targetFOV = firstPerson and (defaultFOV + FOV_ADD) or defaultFOV
		camera.FieldOfView = lerp(camera.FieldOfView, targetFOV, 3 * deltaTime)
	end)
end

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

player.CharacterAdded:Connect(function(char)
	RunService:UnbindFromRenderStep("CameraHandler")
	setupCharacter(char)
end)

StarterGui:SetCore("SendNotification", {
	Title = "Improved First Person";
	Text = "Improved first person script with fov effect.";
	Button1 = "Nice";
	Duration = math.huge;
})

task.delay(0.1, function()
	StarterGui:SetCore("SendNotification", {
		Title = "Script Made by Legend";
		Text = "Credits to the owners for the original scripts. Have fun.";
		Button1 = "Alright";
		Duration = math.huge;
	})
end)

Features & Information

My first person script but the camera sway feature is removed. Recommended for devices THAT'S LAGGY / low-end devices to prevent camera swaying errors.

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts