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)