Roblox ShiftLock UI
Loading...
Roblox ShiftLock GUI Designer

Preview Area

Designer

Script (Mobile Support)

Updated: Mobile & Direction Fix!

Script ini telah diperbaiki agar karakter menghadap ke DEPAN (arah kamera) saat Shift Lock aktif.

Setup Instructions

  • Buat ScreenGui di StarterGui (Matikan 'ResetOnSpawn' jika perlu).
  • Tambahkan ImageButton (posisi di kanan bawah).
  • Paste script di bawah ini ke dalam LocalScript di dalam tombol tersebut.
-- LocalScript (Letakkan di dalam ImageButton)

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer
local button = script.Parent
local uiStroke = button:FindFirstChild("UIStroke")

local isLocked = false

-- Konfigurasi
local COLOR_OFF = Color3.fromRGB(255, 255, 255)
local COLOR_ON = Color3.fromRGB(34, 211, 238) -- Cyan

local function setRotationState(enable)
    local char = player.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.AutoRotate = not enable
    end
end

local function updateVisuals()
    if isLocked then
        button.ImageColor3 = COLOR_ON
        button.ImageTransparency = 0
        button.Rotation = 90
        if uiStroke then uiStroke.Color = COLOR_ON end
        
        -- Lock Mouse (PC)
        UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
        setRotationState(true)
    else
        button.ImageColor3 = COLOR_OFF
        button.ImageTransparency = 0.3
        button.Rotation = 0
        if uiStroke then uiStroke.Color = COLOR_OFF end
        
        -- Unlock Mouse
        UserInputService.MouseBehavior = Enum.MouseBehavior.Default
        setRotationState(false)
    end
end

local function toggleLock()
    isLocked = not isLocked
    updateVisuals()
end

-- Support Touch & Click (Universal)
button.Activated:Connect(toggleLock)

-- Support Keybind "Shift" (PC)
UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not gameProcessed and input.KeyCode == Enum.KeyCode.LeftShift then
        toggleLock()
    end
end)

-- Loop Utama: Menjaga state & Rotasi Karakter (PENTING untuk Mobile)
RunService.RenderStepped:Connect(function()
    if isLocked then
        -- 1. Kunci Mouse (PC)
        UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
        
        -- 2. Putar Karakter mengikuti Kamera (Mobile & PC)
        local char = player.Character
        local root = char and char:FindFirstChild("HumanoidRootPart")
        if root then
            local cam = workspace.CurrentCamera
            local look = cam.CFrame.LookVector
            local angle = math.atan2(-look.X, -look.Z)
            
            -- Set Rotasi (Hanya Y-axis)
            root.CFrame = CFrame.new(root.Position) * CFrame.Angles(0, angle, 0)
        end
    end
end)