-- Universal Airwalk Script for Roblox (PC + Mobile) -- Draggable GUI with toggle, height control, and mobile-friendly design -- Executes as LocalScript (inject via executor like Solara, Fluxus, etc.) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local humanoid = character:WaitForChild("Humanoid") -- Variables local airWalkEnabled = false local airWalkPlatform = nil local platformHeightOffset = -3.5 -- Adjust based on character height local connection = nil -- Create ScreenGui local screenGui = Instance.new("ScreenGui") screenGui.Name = "AirWalkUniversal" screenGui.ResetOnSpawn = false screenGui.Parent = player:WaitForChild("PlayerGui") -- Main Frame (Draggable) local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 220, 0, 180) mainFrame.Position = UDim2.new(0.5, -110, 0.5, -90) mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 35) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true -- Built-in drag for PC mainFrame.Parent = screenGui -- Rounded corners local uiCorner = Instance.new("UICorner") uiCorner.CornerRadius = UDim.new(0, 12) uiCorner.Parent = mainFrame -- Title local title = Instance.new("TextLabel") title.Size = UDim2.new(1, 0, 0, 40) title.BackgroundTransparency = 1 title.Text = "🌬️ AirWalk Universal" title.TextColor3 = Color3.fromRGB(255, 255, 255) title.TextScaled = true title.Font = Enum.Font.GothamBold title.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 12) titleCorner.Parent = title -- Toggle Button local toggleButton = Instance.new("TextButton") toggleButton.Size = UDim2.new(0.85, 0, 0, 45) toggleButton.Position = UDim2.new(0.075, 0, 0.3, 0) toggleButton.BackgroundColor3 = Color3.fromRGB(40, 40, 45) toggleButton.Text = "Enable AirWalk" toggleButton.TextColor3 = Color3.fromRGB(255, 100, 100) toggleButton.TextScaled = true toggleButton.Font = Enum.Font.GothamSemibold toggleButton.Parent = mainFrame local toggleCorner = Instance.new("UICorner") toggleCorner.CornerRadius = UDim.new(0, 10) toggleCorner.Parent = toggleButton -- Height Slider Label local heightLabel = Instance.new("TextLabel") heightLabel.Size = UDim2.new(0.85, 0, 0, 25) heightLabel.Position = UDim2.new(0.075, 0, 0.6, 0) heightLabel.BackgroundTransparency = 1 heightLabel.Text = "Height Offset: -3.5" heightLabel.TextColor3 = Color3.fromRGB(200, 200, 200) heightLabel.TextScaled = true heightLabel.Font = Enum.Font.Gotham heightLabel.Parent = mainFrame -- Height adjustment buttons local heightUp = Instance.new("TextButton") heightUp.Size = UDim2.new(0.4, 0, 0, 30) heightUp.Position = UDim2.new(0.075, 0, 0.75, 0) heightUp.BackgroundColor3 = Color3.fromRGB(50, 50, 55) heightUp.Text = "+" heightUp.TextColor3 = Color3.fromRGB(255, 255, 255) heightUp.TextScaled = true heightUp.Parent = mainFrame local heightDown = Instance.new("TextButton") heightDown.Size = UDim2.new(0.4, 0, 0, 30) heightDown.Position = UDim2.new(0.525, 0, 0.75, 0) heightDown.BackgroundColor3 = Color3.fromRGB(50, 50, 55) heightDown.Text = "-" heightDown.TextColor3 = Color3.fromRGB(255, 255, 255) heightDown.TextScaled = true heightDown.Parent = mainFrame -- Close Button local closeButton = Instance.new("TextButton") closeButton.Size = UDim2.new(0, 30, 0, 30) closeButton.Position = UDim2.new(1, -35, 0, 5) closeButton.BackgroundColor3 = Color3.fromRGB(200, 50, 50) closeButton.Text = "✕" closeButton.TextColor3 = Color3.fromRGB(255, 255, 255) closeButton.TextScaled = true closeButton.Parent = mainFrame local closeCorner = Instance.new("UICorner") closeCorner.CornerRadius = UDim.new(0, 8) closeCorner.Parent = closeButton -- Mobile-friendly draggable floating button (minimized state) local mobileToggle = Instance.new("TextButton") mobileToggle.Size = UDim2.new(0, 60, 0, 60) mobileToggle.Position = UDim2.new(0, 20, 1, -80) mobileToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 255) mobileToggle.Text = "🌬️" mobileToggle.TextScaled = true mobileToggle.Visible = false mobileToggle.Parent = screenGui local mobileCorner = Instance.new("UICorner") mobileCorner.CornerRadius = UDim.new(1, 0) mobileCorner.Parent = mobileToggle -- Airwalk Logic local function createPlatform() if airWalkPlatform then airWalkPlatform:Destroy() end airWalkPlatform = Instance.new("Part") airWalkPlatform.Name = "AirWalkPlatform" airWalkPlatform.Size = Vector3.new(8, 1, 8) -- Large enough platform airWalkPlatform.Transparency = 1 airWalkPlatform.Anchored = true airWalkPlatform.CanCollide = true airWalkPlatform.Parent = workspace end local function updatePlatform() if not airWalkEnabled or not airWalkPlatform then return end local rootPos = humanoidRootPart.Position airWalkPlatform.CFrame = CFrame.new(rootPos.X, rootPos.Y + platformHeightOffset, rootPos.Z) end local function toggleAirWalk() airWalkEnabled = not airWalkEnabled if airWalkEnabled then createPlatform() toggleButton.Text = "Disable AirWalk" toggleButton.TextColor3 = Color3.fromRGB(100, 255, 100) mobileToggle.BackgroundColor3 = Color3.fromRGB(100, 255, 100) else if airWalkPlatform then airWalkPlatform:Destroy() airWalkPlatform = nil end toggleButton.Text = "Enable AirWalk" toggleButton.TextColor3 = Color3.fromRGB(255, 100, 100) mobileToggle.BackgroundColor3 = Color3.fromRGB(0, 170, 255) end end -- Connections toggleButton.MouseButton1Click:Connect(toggleAirWalk) mobileToggle.MouseButton1Click:Connect(toggleAirWalk) heightUp.MouseButton1Click:Connect(function() platformHeightOffset = platformHeightOffset + 0.5 heightLabel.Text = "Height Offset: " .. string.format("%.1f", platformHeightOffset) end) heightDown.MouseButton1Click:Connect(function() platformHeightOffset = platformHeightOffset - 0.5 heightLabel.Text = "Height Offset: " .. string.format("%.1f", platformHeightOffset) end) closeButton.MouseButton1Click:Connect(function() screenGui:Destroy() end) -- Main loop connection = RunService.Heartbeat:Connect(updatePlatform) -- Character respawn handling player.CharacterAdded:Connect(function(newChar) character = newChar humanoidRootPart = newChar:WaitForChild("HumanoidRootPart") humanoid = newChar:WaitForChild("Humanoid") end) -- Mobile detection + floating button if UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled then mobileToggle.Visible = true -- Make mobile toggle draggable local dragging = false local dragInput local dragStart local startPos mobileToggle.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = mobileToggle.Position end end) mobileToggle.InputChanged:Connect(function(input) if dragging and input.UserInputType == Enum.UserInputType.Touch then local delta = input.Position - dragStart mobileToggle.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) mobileToggle.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) end -- PC drag enhancement (for main frame, already draggable) print("Universal AirWalk loaded! Toggle via GUI. Works on PC & Mobile.")