local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Camera = workspace.CurrentCamera local LocalPlayer = Players.LocalPlayer local fovCircle = Drawing.new("Circle") fovCircle.Visible = true fovCircle.Radius = 150 fovCircle.Color = Color3.new(1, 1, 1) fovCircle.Thickness = 1 fovCircle.Filled = false fovCircle.Transparency = 1 local function getClosestPlayer() local target = nil local shortestDistance = fovCircle.Radius for _, player in pairs(Players:GetPlayers()) do if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("Head") then local head = player.Character.Head local pos, onScreen = Camera:WorldToViewportPoint(head.Position) if onScreen then local distance = (Vector2.new(pos.X, pos.Y) - fovCircle.Position).Magnitude if distance < shortestDistance then shortestDistance = distance target = head end end end end return target end RunService.RenderStepped:Connect(function() fovCircle.Position = Vector2.new(Camera.ViewportSize.X / 2, Camera.ViewportSize.Y / 2) local targetHead = getClosestPlayer() if targetHead then Camera.CFrame = Camera.CFrame:Lerp(CFrame.new(Camera.CFrame.Position, targetHead.Position), 0.1) end end)