local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Player = Players.LocalPlayer local Camera = workspace.CurrentCamera local Locked = false local Target = nil -- Create GUI local ScreenGui = Instance.new("ScreenGui") ScreenGui.Parent = Player:WaitForChild("PlayerGui") ScreenGui.ResetOnSpawn = false -- Create Button local Button = Instance.new("TextButton") Button.Parent = ScreenGui Button.Size = UDim2.new(0,60,0,60) Button.Position = UDim2.new(0.8,0,0.7,0) Button.Text = "👁️" Button.TextScaled = true -- Black button Button.BackgroundColor3 = Color3.fromRGB(0,0,0) Button.TextColor3 = Color3.fromRGB(255,255,255) -- Draggable Button.Active = true Button.Draggable = true -- Find target in front local function FindTarget() local Character = Player.Character if not Character then return end local Root = Character:FindFirstChild("HumanoidRootPart") if not Root then return end local Closest = nil local Distance = math.huge for _, Plr in pairs(Players:GetPlayers()) do if Plr ~= Player and Plr.Character then local TargetRoot = Plr.Character:FindFirstChild("HumanoidRootPart") if TargetRoot then local Direction = (TargetRoot.Position - Root.Position).Unit local Facing = Root.CFrame.LookVector:Dot(Direction) if Facing > 0.5 then local Dist = (TargetRoot.Position - Root.Position).Magnitude if Dist < Distance then Distance = Dist Closest = Plr.Character end end end end end return Closest end -- Toggle lock Button.MouseButton1Click:Connect(function() Locked = not Locked if Locked then Target = FindTarget() else Target = nil end end) -- Smooth camera lock RunService.RenderStepped:Connect(function() if Locked and Target then local Root = Target:FindFirstChild("HumanoidRootPart") if Root then local NewCamera = CFrame.lookAt( Camera.CFrame.Position, Root.Position ) Camera.CFrame = Camera.CFrame:Lerp( NewCamera, 0.15 ) end end end)