Click to tp universal works on mobile and pc
Key RequiredUniversal

Click to tp universal works on mobile and pc

Universal Scriptwalkernddecayrivwalkernddecayriv 945 views 1.2K executesUpdated Mar 13, 2026
Unrated
00
Lua Script•267 lines (6654 chars)
local UIS = game:GetService("UserInputService")
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")

local player = Players.LocalPlayer
local mouse = player:GetMouse()

local teleportEnabled = false

local MAX_HEIGHT = 300
local MIN_HEIGHT = -20

--------------------------------------------------
-- UI
--------------------------------------------------

local gui = Instance.new("ScreenGui")
gui.Name = "TeleportUI"
gui.ResetOnSpawn = false
gui.Parent = player:WaitForChild("PlayerGui")

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0,300,0,120)
frame.Position = UDim2.new(0.5,-150,0.1,0)
frame.BackgroundColor3 = Color3.fromRGB(20,20,25)
frame.BackgroundTransparency = 0.15
frame.BorderSizePixel = 0
frame.Parent = gui

Instance.new("UICorner",frame).CornerRadius = UDim.new(0,14)

local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(90,90,120)
stroke.Thickness = 2
stroke.Parent = frame

local title = Instance.new("TextLabel")
title.Size = UDim2.new(1,0,0,40)
title.BackgroundTransparency = 1
title.Text = "Teleport System"
title.Font = Enum.Font.GothamBold
title.TextSize = 22
title.TextColor3 = Color3.new(1,1,1)
title.Parent = frame

local toggle = Instance.new("TextButton")
toggle.Size = UDim2.new(0.8,0,0,40)
toggle.Position = UDim2.new(0.1,0,0.5,-10)
toggle.BackgroundColor3 = Color3.fromRGB(60,60,70)
toggle.Text = "Enable Teleport"
toggle.Font = Enum.Font.GothamBold
toggle.TextColor3 = Color3.new(1,1,1)
toggle.TextSize = 18
toggle.Parent = frame

Instance.new("UICorner",toggle).CornerRadius = UDim.new(0,10)

local indicator = Instance.new("Frame")
indicator.Size = UDim2.new(0,14,0,14)
indicator.Position = UDim2.new(1,-24,0,13)
indicator.BackgroundColor3 = Color3.fromRGB(255,80,80)
indicator.Parent = frame
Instance.new("UICorner",indicator).CornerRadius = UDim.new(1,0)

--------------------------------------------------
-- MOBILE BUTTON
--------------------------------------------------

local mobileButton = Instance.new("TextButton")
mobileButton.Size = UDim2.new(0,120,0,50)
mobileButton.Position = UDim2.new(1,-140,1,-70)
mobileButton.BackgroundColor3 = Color3.fromRGB(40,40,50)
mobileButton.Text = "Teleport"
mobileButton.TextColor3 = Color3.new(1,1,1)
mobileButton.TextScaled = true
mobileButton.Font = Enum.Font.GothamBold
mobileButton.Parent = gui

Instance.new("UICorner",mobileButton).CornerRadius = UDim.new(0,12)

--------------------------------------------------
-- DRAGGABLE UI
--------------------------------------------------

local dragging = false
local dragStart
local startPos

frame.InputBegan:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = true
		dragStart = input.Position
		startPos = frame.Position
	end
end)

frame.InputEnded:Connect(function(input)
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		dragging = false
	end
end)

UIS.InputChanged:Connect(function(input)
	if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
		
		local delta = input.Position - dragStart
		
		frame.Position = UDim2.new(
			startPos.X.Scale,
			startPos.X.Offset + delta.X,
			startPos.Y.Scale,
			startPos.Y.Offset + delta.Y
		)
	end
end)

--------------------------------------------------
-- UI UPDATE
--------------------------------------------------

local function updateUI()

	if teleportEnabled then
		
		toggle.Text = "Disable Teleport"
		
		TweenService:Create(toggle,TweenInfo.new(.25),{
			BackgroundColor3 = Color3.fromRGB(70,170,120)
		}):Play()
		
		indicator.BackgroundColor3 = Color3.fromRGB(70,255,120)
		
	else
		
		toggle.Text = "Enable Teleport"
		
		TweenService:Create(toggle,TweenInfo.new(.25),{
			BackgroundColor3 = Color3.fromRGB(60,60,70)
		}):Play()
		
		indicator.BackgroundColor3 = Color3.fromRGB(255,80,80)
		
	end

end

--------------------------------------------------
-- TELEPORT EFFECT
--------------------------------------------------

local function teleportEffect(position)

	local anchor = Instance.new("Part")
	anchor.Anchored = true
	anchor.CanCollide = false
	anchor.Transparency = 1
	anchor.Size = Vector3.new(1,1,1)
	anchor.Position = position
	anchor.Parent = workspace

	local sound = Instance.new("Sound")
	sound.SoundId = "rbxassetid://5066021887"
	sound.Volume = 1
	sound.Parent = anchor
	sound:Play()

	local ripple = Instance.new("Part")
	ripple.Anchored = true
	ripple.CanCollide = false
	ripple.Shape = Enum.PartType.Cylinder
	ripple.Material = Enum.Material.Neon
	ripple.Color = Color3.fromRGB(0,170,255)
	ripple.Transparency = 0.3
	ripple.Size = Vector3.new(1,0.2,1)
	ripple.CFrame = CFrame.new(position) * CFrame.Angles(math.rad(90),0,0)
	ripple.Parent = workspace

	TweenService:Create(
		ripple,
		TweenInfo.new(.6),
		{Size = Vector3.new(20,0.2,20),Transparency = 1}
	):Play()

	Debris:AddItem(ripple,1)
	Debris:AddItem(anchor,1)

end

--------------------------------------------------
-- SAFE TELEPORT
--------------------------------------------------

local function getSafePosition(hitPosition)

	if hitPosition.Y > MAX_HEIGHT then return nil end
	if hitPosition.Y < MIN_HEIGHT then return nil end

	local rayOrigin = hitPosition + Vector3.new(0,50,0)
	local rayDirection = Vector3.new(0,-200,0)

	local params = RaycastParams.new()
	params.FilterDescendantsInstances = {player.Character}
	params.FilterType = Enum.RaycastFilterType.Blacklist

	local result = workspace:Raycast(rayOrigin,rayDirection,params)

	if result then
		return result.Position
	end

	return nil

end

--------------------------------------------------
-- TOGGLE INPUTS
--------------------------------------------------

toggle.MouseButton1Click:Connect(function()
	teleportEnabled = not teleportEnabled
	updateUI()
end)

mobileButton.MouseButton1Click:Connect(function()
	teleportEnabled = not teleportEnabled
	updateUI()
end)

UIS.InputBegan:Connect(function(input,gp)
	if gp then return end
	
	if input.KeyCode == Enum.KeyCode.P then
		teleportEnabled = not teleportEnabled
		updateUI()
	end
end)

--------------------------------------------------
-- CLICK / TAP TELEPORT
--------------------------------------------------

mouse.Button1Down:Connect(function()

	if not teleportEnabled then return end

	local char = player.Character
	if not char then return end

	local hrp = char:FindFirstChild("HumanoidRootPart")
	if not hrp then return end

	local hit = mouse.Hit.Position

	local safePos = getSafePosition(hit)

	if safePos then
		
		teleportEffect(hrp.Position)

		hrp.CFrame = CFrame.new(safePos + Vector3.new(0,3,0))

		teleportEffect(safePos)

	end

end)

Features & Information

Teleport is p to turn on and off on pc and on mobile it has a teleport button.

Community Comments (1)

HushikeHushikeAug 31, 2026

That's cool and halirous of sound after tp. Update it next time by input that could freely move the enable button to edge by the will from other players

More Scripts for Universal Scripts