Wall glide
Key RequiredUniversal

Wall glide

Universal Scriptgabrielmcglothlin18gabrielmcglothlin18 8.2K views 110 executesUpdated Aug 30, 2025
2.5/ 5(2 votes)
1150% Positive
Lua Scriptβ€’112 lines (3068 chars)
-- Wall Glide (pushes the whole avatar's parts inside the wall slightly)
-- Place in StarterPlayer > StarterPlayerScripts

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")
local player = Players.LocalPlayer

-- safe char
local function getChar()
	local char = player.Character or player.CharacterAdded:Wait()
	local hum = char:WaitForChild("Humanoid")
	local hrp = char:WaitForChild("HumanoidRootPart")
	return char, hum, hrp
end

local char, humanoid, hrp = getChar()

-- GUI
local gui = Instance.new("ScreenGui")
gui.Name = "WallGlideGui"
gui.ResetOnSpawn = false
gui.IgnoreGuiInset = true
gui.Parent = player:WaitForChild("PlayerGui")

local button = Instance.new("TextButton")
button.Name = "GlideButton"
button.Size = UDim2.fromOffset(140, 40)
button.Position = UDim2.new(0, 20, 1, -60)
button.AnchorPoint = Vector2.new(0, 1)
button.TextScaled = true
button.Text = "Glide: OFF"
button.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
button.TextColor3 = Color3.fromRGB(255, 255, 255)
button.Parent = gui

-- State
local glideEnabled = false
local cachedWallNormal = nil

button.MouseButton1Click:Connect(function()
	glideEnabled = not glideEnabled
	button.Text = glideEnabled and "Glide: ON" or "Glide: OFF"
end)

-- raycast settings
local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Blacklist
rayParams.FilterDescendantsInstances = {char}

-- tunables
local RAY_LEN = 2.5
local DEPTH_INTO_WALL = 0.2
local MAX_FALL = -10

-- push ALL avatar parts into wall
local function embedAvatar(normal)
	for _, part in ipairs(char:GetDescendants()) do
		if part:IsA("BasePart") and part.CanCollide then
			part.CFrame = part.CFrame * CFrame.new(normal * -DEPTH_INTO_WALL)
		end
	end
end

RunService.Heartbeat:Connect(function()
	if not char or not char.Parent or not hrp or not hrp.Parent then
		char, humanoid, hrp = getChar()
		rayParams.FilterDescendantsInstances = {char}
	end

	if not glideEnabled then
		cachedWallNormal = nil
		return
	end

	if humanoid:GetState() ~= Enum.HumanoidStateType.Freefall then
		cachedWallNormal = nil
		return
	end

	-- check in front of avatar
	local result = workspace:Raycast(hrp.Position, hrp.CFrame.LookVector * RAY_LEN, rayParams)
	if result and result.Instance and result.Instance.CanCollide then
		cachedWallNormal = result.Normal

		-- actually push whole avatar in
		embedAvatar(result.Normal)

		-- limit fall speed
		local v = hrp.Velocity
		local y = (v.Y < MAX_FALL) and MAX_FALL or v.Y
		hrp.Velocity = Vector3.new(v.X, y, v.Z)
	else
		cachedWallNormal = nil
	end
end)

-- optional wall jump
UIS.JumpRequest:Connect(function()
	if glideEnabled and cachedWallNormal then
		local away = cachedWallNormal * 28
		hrp.Velocity = hrp.Velocity + away + Vector3.new(0, 28, 0)
	end
end)

-- respawn support
player.CharacterAdded:Connect(function(newChar)
	char = newChar
	humanoid = char:WaitForChild("Humanoid")
	hrp = char:WaitForChild("HumanoidRootPart")
	rayParams.FilterDescendantsInstances = {char}
end)

Features & Information

Lets u glide on walls
#Wall gide

Community Comments (12)

Carterjam28YTCarterjam28YTAug 30, 2025

ai ahh script

Replying to @Carterjam28YT

@Carterjam28YT ACTUALLY no πŸ€“ I made it u don't got to write * like that if u don't like it js don't comment

Replying to @gabrielmcglothlin18
Carterjam28YTCarterjam28YTAug 30, 2025

@gabrielmcglothlin18 ACTUALLY no πŸ€“ Chagpt says this -- Place in StarterPlayer > StarterPlayerScripts

Replying to @Carterjam28YT

@Carterjam28YT yeah I had to test it in my game first

Replying to @gabrielmcglothlin18

@gabrielmcglothlin18 you know. We can tell Youre a skid bruh.

grabov273grabov273Aug 30, 2025

CAAAAAAATπŸ˜­πŸ˜€πŸ˜‚πŸ˜„πŸ˜†πŸ˜—πŸ€€πŸ€©πŸ˜€πŸ˜‚πŸ˜šπŸ˜—πŸ˜˜πŸ˜πŸ₯±πŸ˜ΆπŸ˜°πŸ§πŸ˜°πŸ˜’πŸ˜ πŸ˜’β˜ΊοΈπŸ™„πŸ˜‘πŸ€¬πŸ™„πŸ˜‘πŸ˜πŸ₯ΊπŸ˜„πŸ˜ŒπŸ˜™πŸ˜‘πŸ€

"-- PuT It iN StARtErplAyer > StArTErPlayErScripTs" bro chatgpt...

1. We do not use shortening that much 2. "-- PuT It iN StARtErplAyer > StArTErPlayErScripTs" bro chatgpt... 3. WE DO NOT HAVE TIME, TO WRITE THAT MUCH COMMENT(--) S

Hello, I am back with a genius idea. HOW ABOUT I ASK CHATGPT? LOL

Chatgpt said: So yeah… the moment I saw the first two lines, I’d bet money this was either AI-generated or heavily inspired by a beginner tutorial, not β€œfrom a professional Roblox scripter.”

Replying to @Joyful_PizzaPartyl

Like even chatgpt can bet money this is Ai gend bro..

Chat, ggs

More Scripts for Universal Scripts