Freeze Camera
Key RequiredUniversal

Freeze Camera

Universal ScriptSupportBlueWomenSupportBlueWomen 45 views 307 executesUpdated Jul 8, 2026
Unrated
00
Lua Script•114 lines (3615 chars)
-- 1. DESTROY EXISTING GUI IF RE-EXECUTED
local oldGui = game:GetService("CoreGui"):FindFirstChild("DeltaCameraFreezeGui") or game:GetService("Players").LocalPlayer.PlayerGui:FindFirstChild("DeltaCameraFreezeGui")
if oldGui then oldGui:Destroy() end

-- 2. SETUP SERVICES
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local camera = workspace.CurrentCamera
local player = game.Players.LocalPlayer
local targetParent = game:GetService("CoreGui") or player:WaitForChild("PlayerGui")

-- 3. CREATE INTERFACE
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "DeltaCameraFreezeGui"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = targetParent

local button = Instance.new("TextButton")
button.Name = "FreezeButton"
button.Size = UDim2.new(0, 160, 0, 50)
button.Position = UDim2.new(0.5, -80, 0.2, 0)
button.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
button.Text = "Freeze Camera"
button.TextColor3 = Color3.fromRGB(255, 255, 255)
button.Font = Enum.Font.SourceSansBold
button.TextSize = 18
button.BorderSizePixel = 0
button.ZIndex = 10
button.Parent = ScreenGui

local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 8)
UICorner.Parent = button

local UIStroke = Instance.new("UIStroke")
UIStroke.Color = Color3.fromRGB(0, 255, 150)
UIStroke.Thickness = 2
UIStroke.Parent = button

-- 4. HARD-LOCK CAMERA LOGIC WITH PERMANENT BUTTON
local isFrozen = false
local frozenCFrame = nil
local cameraLoop = nil

local function unfreezeCamera()
    isFrozen = false
    if cameraLoop then 
        cameraLoop:Disconnect() 
        cameraLoop = nil
    end
    camera.CameraType = Enum.CameraType.Custom
    button.Text = "Freeze Camera"
    UIStroke.Color = Color3.fromRGB(0, 255, 150) -- Changes border back to Green
end

local function freezeCamera()
    isFrozen = true
    frozenCFrame = camera.CFrame -- Capture current camera angle
    button.Text = "Unfreeze Camera"
    UIStroke.Color = Color3.fromRGB(255, 50, 50) -- Changes border to Red so you know it's locked
    
    -- Force-locks the camera position on every single frame loop
    cameraLoop = RunService.RenderStepped:Connect(function()
        if isFrozen then
            camera.CameraType = Enum.CameraType.Scriptable
            camera.CFrame = frozenCFrame
        end
    end)
end

-- Primary tap interaction
button.MouseButton1Click:Connect(function()
    if not isFrozen then
        freezeCamera()
    else
        unfreezeCamera()
    end
end)

-- 5. EXECUTOR-FRIENDLY DRAGGING LOGIC
local dragging = false
local dragInput, dragStart, startPos

button.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = button.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        end)
    end
end)

button.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragging then
        local delta = input.Position - dragStart
        button.Position = UDim2.new(
            startPos.X.Scale, 
            startPos.X.Offset + delta.X, 
            startPos.Y.Scale, 
            startPos.Y.Offset + delta.Y
        )
    end
end)

Features & Information

Idk freezecamera

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts