Fly Plus V2
Key RequiredUniversal

Fly Plus V2

Universal ScriptWill_stepWill_step 4.5K views 516 executesUpdated Oct 31, 2025
Unrated
00
Lua Script•172 lines (4971 chars)
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local player = Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local hrp = char:WaitForChild("HumanoidRootPart")

local flying = false
local flySpeed = 80
local verticalSpeed = 0
local NOCLIP_THRESHOLD = 200
local noClipActive = false
local connRender

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

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 400, 0, 60)
mainFrame.Position = UDim2.new(0, 10, 0, 10) -- canto superior esquerdo
mainFrame.BackgroundColor3 = Color3.fromRGB(50, 100, 220)
mainFrame.Parent = gui

local uiListLayout = Instance.new("UIListLayout")
uiListLayout.FillDirection = Enum.FillDirection.Horizontal
uiListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left
uiListLayout.VerticalAlignment = Enum.VerticalAlignment.Center
uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder
uiListLayout.Padding = UDim.new(0, 4)
uiListLayout.Parent = mainFrame

local function makeButton(text, bgColor, layoutOrder, callback)
	local button = Instance.new("TextButton")
	button.Text = text
	button.BackgroundColor3 = bgColor
	button.TextSize = 24
	button.Font = Enum.Font.SourceSansBold
	button.TextColor3 = Color3.new(1, 1, 1)
	button.Size = UDim2.new(0, 50, 0, 50)
	button.LayoutOrder = layoutOrder
	button.Parent = mainFrame
	if callback then
		button.MouseButton1Down:Connect(callback)
	end
	return button
end

-- Label de velocidade
local speedLabel = Instance.new("TextLabel")
speedLabel.Size = UDim2.new(0, 100, 0, 40)
speedLabel.BackgroundColor3 = Color3.fromRGB(200, 200, 200)
speedLabel.TextColor3 = Color3.new(0, 0, 0)
speedLabel.TextSize = 20
speedLabel.Font = Enum.Font.SourceSansBold
speedLabel.Text = "速度: " .. flySpeed
speedLabel.LayoutOrder = 1
speedLabel.Parent = mainFrame

-- Botão "+"
local plusBtn = makeButton("+", Color3.fromRGB(50, 180, 50), 2, function()
	flySpeed = flySpeed + 10
	speedLabel.Text = "速度: " .. flySpeed
end)

-- Botão "−"
local minusBtn = makeButton("−", Color3.fromRGB(180, 50, 50), 3, function()
	flySpeed = math.max(10, flySpeed - 10)
	speedLabel.Text = "速度: " .. flySpeed
end)

-- Botão "飛行"
makeButton("飛行", Color3.fromRGB(220, 50, 50), 4, function()
	if flying then
		stopFly()
	else
		startFly()
	end
end)

-- Botão "上" (subir)
local upBtn = makeButton("上", Color3.fromRGB(220, 50, 50), 5)
upBtn.MouseButton1Down:Connect(function() verticalSpeed = 60 end)
upBtn.MouseButton1Up:Connect(function() verticalSpeed = 0 end)

-- Botão "下" (descer)
local downBtn = makeButton("下", Color3.fromRGB(220, 50, 50), 6)
downBtn.MouseButton1Down:Connect(function() verticalSpeed = -60 end)
downBtn.MouseButton1Up:Connect(function() verticalSpeed = 0 end)

local bodyVel, bodyGyro

local function setNoClip(state)
	for _, part in ipairs(char:GetDescendants()) do
		if part:IsA("BasePart") then
			part.CanCollide = not state
		end
	end
end

function startFly()
	if flying then return end
	flying = true
	hum.PlatformStand = true

	bodyVel = Instance.new("BodyVelocity")
	bodyVel.MaxForce = Vector3.new(1e5, 1e5, 1e5)
	bodyVel.Velocity = Vector3.new(0, 0, 0)
	bodyVel.Parent = hrp

	bodyGyro = Instance.new("BodyGyro")
	bodyGyro.MaxTorque = Vector3.new(1e5, 1e5, 1e5)
	bodyGyro.CFrame = hrp.CFrame
	bodyGyro.Parent = hrp

	connRender = RunService.RenderStepped:Connect(function()
		if not flying then return end
		local camCF = workspace.CurrentCamera.CFrame

		local mv = hum.MoveDirection * flySpeed
		local move = Vector3.new(mv.X, verticalSpeed, mv.Z)

		bodyVel.Velocity = move
		bodyGyro.CFrame = CFrame.new(hrp.Position, hrp.Position + camCF.LookVector)

		if flySpeed >= NOCLIP_THRESHOLD and not noClipActive then
			setNoClip(true)
			noClipActive = true
		elseif flySpeed < NOCLIP_THRESHOLD and noClipActive then
			setNoClip(false)
			noClipActive = false
		end

		speedLabel.Text = "速度: " .. flySpeed
	end)
end

function stopFly()
	flying = false
	hum.PlatformStand = false
	if bodyVel then bodyVel:Destroy() bodyVel = nil end
	if bodyGyro then bodyGyro:Destroy() bodyGyro = nil end
	if connRender then connRender:Disconnect() connRender = nil end
	setNoClip(false)
end

player.CharacterAdded:Connect(function(c)
	char = c
	hum = c:WaitForChild("Humanoid")
	hrp = c:WaitForChild("HumanoidRootPart")
	if flying then
		task.wait(1)
		startFly()
	end
end)

-- Controle vertical pelo joystick
UserInputService.InputChanged:Connect(function(input)
	if flying and (input.UserInputType == Enum.UserInputType.Gamepad1 or input.UserInputType == Enum.UserInputType.Touch) then
		if input.KeyCode == Enum.KeyCode.Thumbstick1 then
			local yAxis = input.Position.Y
			if math.abs(yAxis) > 0.1 then
				verticalSpeed = -yAxis * 60
			else
				verticalSpeed = 0
			end
		end
	end
end)

Features & Information

New Fly Script But in test it

Community Comments (1)

lockinbrolockinbroNov 11, 2025

crashes game.

More Scripts for Universal Scripts