Free mobile fly and open source
Key RequiredUniversal

Free mobile fly and open source

Universal ScriptMadaMada 9.2K views 536 executesUpdated Apr 25, 2025
3.3/ 5(3 votes)
2167% Positive
Lua Script•173 lines (6872 chars)
local player, character, humanoid, HRP, flySpeed, flying, bodyVelocity, bodyGyro, TweenService, RunService, Camera, screenGui, loadingFrame, loadingLabel, flyControlsContainer, dpadSize, toggleButton, forwardButton, backButton, leftButton, rightButton, upButton, downButton, uiToggleButton, uiVisible, inputFlags

player = game.Players.LocalPlayer
character = player.Character or player.CharacterAdded:Wait()
humanoid = character:WaitForChild("Humanoid")
HRP = character:WaitForChild("HumanoidRootPart")
flySpeed = 50
flying = false
bodyVelocity = Instance.new("BodyVelocity")
bodyVelocity.Velocity = Vector3.new(0, 0, 0)
bodyVelocity.MaxForce = Vector3.new(100000, 100000, 100000)
bodyGyro = Instance.new("BodyGyro")
bodyGyro.CFrame = HRP.CFrame
bodyGyro.MaxTorque = Vector3.new(100000, 100000, 100000)
TweenService = game:GetService("TweenService")
RunService = game:GetService("RunService")
Camera = workspace.CurrentCamera
screenGui = Instance.new("ScreenGui")
screenGui.Name = "FlyScreenGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
loadingFrame = Instance.new("Frame")
loadingFrame.Name = "LoadingFrame"
loadingFrame.Size = UDim2.new(1, 0, 1, 0)
loadingFrame.Position = UDim2.new(0, 0, 0, 0)
loadingFrame.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
loadingFrame.BackgroundTransparency = 0
loadingFrame.Parent = screenGui
loadingLabel = Instance.new("TextLabel")
loadingLabel.Name = "LoadingLabel"
loadingLabel.Size = UDim2.new(0.5, 0, 0.2, 0)
loadingLabel.Position = UDim2.new(0.25, 0, 0.4, 0)
loadingLabel.BackgroundTransparency = 1
loadingLabel.Text = "Loading..."
loadingLabel.TextScaled = true
loadingLabel.Font = Enum.Font.GothamBold
loadingLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
loadingLabel.Parent = loadingFrame
flyControlsContainer = Instance.new("Frame")
flyControlsContainer.Name = "FlyControlsContainer"
flyControlsContainer.Size = UDim2.new(1, 0, 1, 0)
flyControlsContainer.BackgroundTransparency = 1
flyControlsContainer.Parent = screenGui
dpadSize = UDim2.new(0, 60, 0, 60)
toggleButton = nil
forwardButton = nil
backButton = nil
leftButton = nil
rightButton = nil
upButton = nil
downButton = nil
uiToggleButton = nil
uiVisible = true
inputFlags = { forward = false, back = false, left = false, right = false, up = false, down = false }

local function startFlying()
 flying = true
 bodyVelocity.Parent = HRP
 bodyGyro.Parent = HRP
 humanoid.PlatformStand = true
end

local function stopFlying()
 flying = false
 bodyVelocity.Parent = nil
 bodyGyro.Parent = nil
 humanoid.PlatformStand = false
end

local function createButton(parent, name, text, pos, size)
 local btn = Instance.new("TextButton")
 btn.Name = name
 btn.Text = text
 btn.Size = size
 btn.Position = pos
 btn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
 btn.TextColor3 = Color3.fromRGB(255, 255, 255)
 btn.Font = Enum.Font.GothamBold
 btn.TextScaled = true
 btn.BackgroundTransparency = 0.2
 btn.Parent = parent
 local corner = Instance.new("UICorner")
 corner.CornerRadius = UDim.new(0, 12)
 corner.Parent = btn
 return btn
end

local function tweenFlyControls(visible)
 local tweenTime = 0.5
 for _, btn in pairs(flyControlsContainer:GetChildren()) do
  if btn:IsA("TextButton") then
   local targetBackgroundTransparency = visible and 0.2 or 1
   local targetTextTransparency = visible and 0 or 1
   local tweenInfo = TweenInfo.new(tweenTime, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
   local tween = TweenService:Create(btn, tweenInfo, {
    BackgroundTransparency = targetBackgroundTransparency,
    TextTransparency = targetTextTransparency
   })
   tween:Play()

   -- Désactiver les clics quand invisible
   btn.Active = visible
   btn.Selectable = visible
  end
 end
end

local function addTouchEvents(button, flagName)
 button.MouseButton1Down:Connect(function() inputFlags[flagName] = true end)
 button.MouseButton1Up:Connect(function() inputFlags[flagName] = false end)
 button.MouseLeave:Connect(function() inputFlags[flagName] = false end)
end

toggleButton = createButton(flyControlsContainer, "ToggleFlyButton", "Toggle Fly", UDim2.new(1, -110, 0, 10), UDim2.new(0, 100, 0, 50))
toggleButton.MouseButton1Click:Connect(function()
 if flying then
  stopFlying()
  toggleButton.Text = "Fly OFF"
 else
  startFlying()
  toggleButton.Text = "Fly ON"
 end
end)
forwardButton = createButton(flyControlsContainer, "ForwardButton", "↑", UDim2.new(0, 70, 1, -190), dpadSize)
backButton = createButton(flyControlsContainer, "BackButton", "↓", UDim2.new(0, 70, 1, -70), dpadSize)
leftButton = createButton(flyControlsContainer, "LeftButton", "←", UDim2.new(0, 10, 1, -130), dpadSize)
rightButton = createButton(flyControlsContainer, "RightButton", "→", UDim2.new(0, 130, 1, -130), dpadSize)
upButton = createButton(flyControlsContainer, "UpButton", "Up", UDim2.new(1, -110, 1, -190), dpadSize)
downButton = createButton(flyControlsContainer, "DownButton", "Down", UDim2.new(1, -110, 1, -70), dpadSize)
uiToggleButton = createButton(screenGui, "UIToggleButton", "Hide UI", UDim2.new(0, 10, 0, 10), UDim2.new(0, 100, 0, 50))
uiToggleButton.MouseButton1Click:Connect(function()
 uiVisible = not uiVisible
 tweenFlyControls(uiVisible)
 uiToggleButton.Text = uiVisible and "Hide UI" or "Show UI"
end)
addTouchEvents(forwardButton, "forward")
addTouchEvents(backButton, "back")
addTouchEvents(leftButton, "left")
addTouchEvents(rightButton, "right")
addTouchEvents(upButton, "up")
addTouchEvents(downButton, "down")

player.CharacterAdded:Connect(function(newCharacter)
 character = newCharacter
 humanoid = newCharacter:WaitForChild("Humanoid")
 HRP = newCharacter:WaitForChild("HumanoidRootPart")
 flying = false
end)

RunService.RenderStepped:Connect(function(deltaTime)
 if flying then
  local moveDirection = Vector3.new(0, 0, 0)
  local camCF = Camera.CFrame
  if inputFlags.forward then moveDirection = moveDirection + camCF.LookVector end
  if inputFlags.back then moveDirection = moveDirection - camCF.LookVector end
  if inputFlags.left then moveDirection = moveDirection - camCF.RightVector end
  if inputFlags.right then moveDirection = moveDirection + camCF.RightVector end
  if inputFlags.up then moveDirection = moveDirection + Vector3.new(0, 1, 0) end
  if inputFlags.down then moveDirection = moveDirection - Vector3.new(0, 1, 0) end
  if moveDirection.Magnitude > 0 then moveDirection = moveDirection.Unit end
  bodyVelocity.Velocity = moveDirection * flySpeed
  bodyGyro.CFrame = camCF
 end
end)

task.delay(2, function()
 local tweenInfo = TweenInfo.new(0.8, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
 local tweenFrame = TweenService:Create(loadingFrame, tweenInfo, { BackgroundTransparency = 1 })
 local tweenLabel = TweenService:Create(loadingLabel, tweenInfo, { TextTransparency = 1 })
 tweenFrame:Play()
 tweenLabel:Play()
 tweenFrame.Completed:Connect(function() loadingFrame:Destroy() end)
end)

Features & Information

Buttons for toggle fly, hide ui, down, up

Community Comments (1)

TheVaultScriptsTheVaultScriptsJun 1, 2025

i just lost the code to my working fly toggle and you saved me, thank you

More Scripts for Universal Scripts