FE Telekinesis script Best Mobile support (Bug Fixed)
Key RequiredUniversal

FE Telekinesis script Best Mobile support (Bug Fixed)

Universal Scriptano4ano4 10.3K views 1.9K executesUpdated Sep 11, 2025
1.7/ 5(3 votes)
1233% Positive
Lua Script•257 lines (8634 chars)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

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

local movingPart = nil
local followDistance = 10
local followSpeed = 200
local useCamera = false
local lastPosition = nil

local gui, frame, nameLabel, collapseButton, decreaseButton, numberBox, increaseButton, cameraButton
local collapsed = false

local selectionBox = Instance.new("SelectionBox")
selectionBox.Color3 = Color3.fromRGB(0, 255, 0)
selectionBox.LineThickness = 0.08
selectionBox.SurfaceTransparency = 1
selectionBox.Adornee = nil
selectionBox.Parent = game:GetService("CoreGui") 
selectionBox.Name = "TelSelBox"

local function stopMoving()
    movingPart = nil
    selectionBox.Adornee = nil
end

local function movePartVelocity(part, targetPos, deltaTime)
    if not part or part.Anchored then return end
    local direction = (targetPos - part.Position)
    local velocity = direction * 15
    if velocity.Magnitude > followSpeed then
        velocity = velocity.Unit * followSpeed
    end
    part.AssemblyLinearVelocity = velocity
end

local function startMoving(part)
    movingPart = part
    lastPosition = part.Position
    selectionBox.Adornee = part
end

local function togglePartMove(part)
    if movingPart == part then
        stopMoving()
    elseif not part.Anchored then
        stopMoving()
        startMoving(part)
    end
end

local function createTool()
    if player.Backpack:FindFirstChild("TelTool") then return end
    local tool = Instance.new("Tool")
    tool.Name = "Telekinesis"
    tool.RequiresHandle = false
    tool.CanBeDropped = true
    tool.Parent = player.Backpack

    tool.Equipped:Connect(function(mouse)
        if mouse then
            mouse.Button1Down:Connect(function()
                local target = mouse.Target
                if target and target:IsA("BasePart") and not target.Anchored then
                    togglePartMove(target)
                end
            end)
        end

        local touchConnection
        touchConnection = UserInputService.TouchTapInWorld:Connect(function(pos, processed)
            if processed then return end
            local ray = camera:ScreenPointToRay(pos.X, pos.Y)
            local params = RaycastParams.new()
            params.FilterDescendantsInstances = {player.Character}
            params.FilterType = Enum.RaycastFilterType.Blacklist
            local result = workspace:Raycast(ray.Origin, ray.Direction * 1000, params)
            if result and result.Instance and result.Instance:IsA("BasePart") and not result.Instance.Anchored then
                togglePartMove(result.Instance)
            end
        end)

        tool.Unequipped:Connect(function()
            stopMoving()
            if touchConnection then
                touchConnection:Disconnect()
                touchConnection = nil
            end
        end)
    end)
end

RunService.Heartbeat:Connect(function(deltaTime)
    if movingPart then
        local char = player.Character
        local root = char and char:FindFirstChild("HumanoidRootPart")
        if not (root and movingPart and movingPart.Parent and not movingPart.Anchored) then
            stopMoving()
            return
        end

        local targetPosition
        if useCamera then
            targetPosition = camera.CFrame.Position + camera.CFrame.LookVector * followDistance
        else
            targetPosition = root.Position + root.CFrame.LookVector * followDistance
        end

        movePartVelocity(movingPart, targetPosition, deltaTime)

        if (movingPart.Position - lastPosition).Magnitude > 100 then
            stopMoving()
            return
        end
        lastPosition = movingPart.Position
    end
end)

local function createGUI()
    if gui then gui:Destroy() end

    gui = Instance.new("ScreenGui")
    gui.Name = "TelGUI"
    gui.ResetOnSpawn = false
    gui.DisplayOrder = 50000
    gui.ZIndexBehavior = Enum.ZIndexBehavior.Global
    gui.Parent = game:GetService("CoreGui") 
    

    frame = Instance.new("Frame")
    frame.Size = UDim2.new(0.24, 0, 0.3, 0)
    frame.Position = UDim2.new(0.02, 0, 0.1, 0)
    frame.BackgroundColor3 = Color3.fromRGB(127, 127, 127)
    frame.BackgroundTransparency = 0.05
    frame.BorderColor3 = Color3.fromRGB(27, 42, 53)
    frame.BorderSizePixel = 1
    frame.Active = true
    frame.Draggable = true
    frame.Parent = gui

    nameLabel = Instance.new("TextLabel")
    nameLabel.Size = UDim2.new(1, 0, 0.2, 0)
    nameLabel.Position = UDim2.new(0, 0, 0, 0)
    nameLabel.BackgroundColor3 = Color3.fromRGB(162, 162, 162)
    nameLabel.Text = "Telekinesis By Ano"
    nameLabel.TextScaled = true
    nameLabel.Font = Enum.Font.Legacy
    nameLabel.TextColor3 = Color3.fromRGB(27, 42, 53)
    nameLabel.Parent = frame

    collapseButton = Instance.new("TextButton")
    collapseButton.Size = UDim2.new(0.12, 0, 1, 0)
    collapseButton.Position = UDim2.new(0.88, 0, 0, 0)
    collapseButton.Text = "V"
    collapseButton.TextScaled = true
    collapseButton.Font = Enum.Font.Legacy
    collapseButton.TextColor3 = Color3.fromRGB(27, 42, 53)
    collapseButton.BackgroundColor3 = Color3.fromRGB(150, 150, 150)
    collapseButton.Parent = nameLabel

    collapseButton.MouseButton1Click:Connect(function()
        collapsed = not collapsed
        for _, child in ipairs(frame:GetChildren()) do
            if child ~= nameLabel then
                child.Visible = not collapsed
            end
        end
        if collapsed then
            frame.Size = UDim2.new(0.24, 0, 0.06, 0)
            nameLabel.Size = UDim2.new(1, 0, 1, 0)
            frame.BackgroundTransparency = 1
            collapseButton.Text = "<"
        else
            frame.Size = UDim2.new(0.24, 0, 0.3, 0)
            nameLabel.Size = UDim2.new(1, 0, 0.2, 0)
            frame.BackgroundTransparency = 0.05
            collapseButton.Text = "V"
        end
    end)

    decreaseButton = Instance.new("TextButton")
    decreaseButton.Size = UDim2.new(0.18, 0, 0.3, 0)
    decreaseButton.Position = UDim2.new(0.08, 0, 0.25, 0)
    decreaseButton.Text = "-"
    decreaseButton.TextScaled = true
    decreaseButton.Font = Enum.Font.Legacy
    decreaseButton.TextColor3 = Color3.fromRGB(27, 42, 53)
    decreaseButton.BackgroundColor3 = Color3.fromRGB(160, 160, 160)
    decreaseButton.Parent = frame

    numberBox = Instance.new("TextBox")
    numberBox.Size = UDim2.new(0.45, 0, 0.3, 0)
    numberBox.Position = UDim2.new(0.28, 0, 0.25, 0)
    numberBox.Text = tostring(followDistance)
    numberBox.Font = Enum.Font.Legacy
    numberBox.TextColor3 = Color3.fromRGB(27, 42, 53)
    numberBox.BackgroundColor3 = Color3.fromRGB(159, 159, 159)
    numberBox.ClearTextOnFocus = true
    numberBox.Parent = frame

    increaseButton = Instance.new("TextButton")
    increaseButton.Size = UDim2.new(0.18, 0, 0.3, 0)
    increaseButton.Position = UDim2.new(0.75, 0, 0.25, 0)
    increaseButton.Text = "+"
    increaseButton.TextScaled = true
    increaseButton.Font = Enum.Font.Legacy
    increaseButton.TextColor3 = Color3.fromRGB(27, 42, 53)
    increaseButton.BackgroundColor3 = Color3.fromRGB(160, 160, 160)
    increaseButton.Parent = frame

    cameraButton = Instance.new("TextButton")
    cameraButton.Size = UDim2.new(0.85, 0, 0.3, 0)
    cameraButton.Position = UDim2.new(0.08, 0, 0.6, 0)
    cameraButton.Text = "Camera Follow: OFF"
    cameraButton.TextScaled = true
    cameraButton.Font = Enum.Font.Legacy
    cameraButton.TextColor3 = Color3.fromRGB(27, 42, 53)
    cameraButton.BackgroundColor3 = Color3.fromRGB(160, 160, 160)
    cameraButton.Parent = frame

    local function updateNumberBox()
        numberBox.Text = tostring(followDistance)
    end

    decreaseButton.MouseButton1Click:Connect(function()
        followDistance = math.clamp(followDistance - 1, 1, 500000)
        updateNumberBox()
    end)

    increaseButton.MouseButton1Click:Connect(function()
        followDistance = math.clamp(followDistance + 1, 1, 500000)
        updateNumberBox()
    end)

    numberBox.FocusLost:Connect(function()
        local num = tonumber(numberBox.Text)
        if num then
            followDistance = math.clamp(num, 0.001, 500000)
        end
        updateNumberBox()
    end)

    cameraButton.MouseButton1Click:Connect(function()
        useCamera = not useCamera
        cameraButton.Text = "Camera Follow: " .. (useCamera and "ON" or "OFF")
    end)
end

createTool()
createGUI()
player.CharacterAdded:Connect(function()
    createTool()
    createGUI()
end)

Features & Information

This script may not work properly due to if another player is too close to the object or if the part is serverside or if you're not close enough to the object it usually works better in single player games Adjustable Distance Best Mobile support UI First Person Toggle(Camera Follow) Collapsible UI Telekinesis item stays after respawns Fixed bugs made by me
#FE#Telekinesis#Keyless#Mobile#Telekinesis FE

Community Comments (10)

RonetheutmmguyRonetheutmmguySep 11, 2025

Not working

Replying to @Ronetheutmmguy
ano4ano4Sep 12, 2025

@Ronetheutmmguy it may not work in all games and if u are on pc it might not work I didn't test the pc support sorry

Replying to @Ronetheutmmguy
ano4ano4Sep 12, 2025

@Ronetheutmmguy it should work now

vryvovryvoSep 12, 2025

will test

RonetheutmmguyRonetheutmmguySep 12, 2025

Yet is not working pls add in description games that works I tried rate. My avatar and or more

Replying to @Ronetheutmmguy
ano4ano4Sep 12, 2025

@Ronetheutmmguy Does the UI load

sampolorisampoloriSep 12, 2025

Can you explain how it works and which games are supported?

ano4ano4Sep 12, 2025

Script is updated it should work problem was load string error

ano4ano4Sep 12, 2025

Sorry for the inconvenience

RonetheutmmguyRonetheutmmguySep 17, 2025

Yes

More Scripts for Universal Scripts