local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local Workspace = game:GetService("Workspace") local LocalPlayer = Players.LocalPlayer local Camera = Workspace.CurrentCamera -- Flight Settings local displaySpeed = 30 -- Default set to 30 (Fast!) local minSpeed = 1 local maxSpeed = 50 local SPEED_MULTIPLIER = 6 -- Multiplies value so '30' feels extremely fast local isFlying = false local mobileAscend = 0 -- Physical Components local character, human, root local linearVelocity, alignOrientation, attachment -------------------------------------------------------------------------------- -- GUI CREATION -------------------------------------------------------------------------------- local screenGui = Instance.new("ScreenGui") screenGui.Name = "FlyControlGui" screenGui.ResetOnSpawn = false screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") -- Main Menu Frame local mainFrame = Instance.new("Frame") mainFrame.Name = "MainFrame" mainFrame.Size = UDim2.new(0, 220, 0, 180) mainFrame.Position = UDim2.new(0.85, -110, 0.5, -90) mainFrame.BackgroundColor3 = Color3.fromRGB(20, 22, 30) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Draggable = true mainFrame.Parent = screenGui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 10) mainCorner.Parent = mainFrame local mainStroke = Instance.new("UIStroke") mainStroke.Color = Color3.fromRGB(50, 55, 75) mainStroke.Thickness = 1.5 mainStroke.Parent = mainFrame -- Title Bar local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, -20, 0, 30) titleLabel.Position = UDim2.new(0, 10, 0, 5) titleLabel.BackgroundTransparency = 1 titleLabel.Text = "FLIGHT CONTROL" titleLabel.TextColor3 = Color3.fromRGB(200, 205, 220) titleLabel.TextSize = 13 titleLabel.Font = Enum.Font.GothamBold titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Parent = mainFrame -- Toggle Fly Button local flyBtn = Instance.new("TextButton") flyBtn.Size = UDim2.new(1, -20, 0, 38) flyBtn.Position = UDim2.new(0, 10, 0, 35) flyBtn.BackgroundColor3 = Color3.fromRGB(46, 204, 113) flyBtn.Text = "ENABLE FLY" flyBtn.TextColor3 = Color3.fromRGB(255, 255, 255) flyBtn.TextSize = 14 flyBtn.Font = Enum.Font.GothamBold flyBtn.Parent = mainFrame local flyCorner = Instance.new("UICorner") flyCorner.CornerRadius = UDim.new(0, 6) flyCorner.Parent = flyBtn -- Speed Control Container local speedFrame = Instance.new("Frame") speedFrame.Size = UDim2.new(1, -20, 0, 40) speedFrame.Position = UDim2.new(0, 10, 0, 80) speedFrame.BackgroundColor3 = Color3.fromRGB(30, 33, 45) speedFrame.BorderSizePixel = 0 speedFrame.Parent = mainFrame local speedCorner = Instance.new("UICorner") speedCorner.CornerRadius = UDim.new(0, 6) speedCorner.Parent = speedFrame -- Speed Decrease (-) local decBtn = Instance.new("TextButton") decBtn.Size = UDim2.new(0, 35, 1, 0) decBtn.Position = UDim2.new(0, 0, 0, 0) decBtn.BackgroundColor3 = Color3.fromRGB(45, 50, 68) decBtn.Text = "-" decBtn.TextColor3 = Color3.fromRGB(255, 255, 255) decBtn.TextSize = 18 decBtn.Font = Enum.Font.GothamBold decBtn.Parent = speedFrame local decCorner = Instance.new("UICorner") decCorner.CornerRadius = UDim.new(0, 6) decCorner.Parent = decBtn -- Speed Display / Input local speedBox = Instance.new("TextBox") speedBox.Size = UDim2.new(1, -70, 1, 0) speedBox.Position = UDim2.new(0, 35, 0, 0) speedBox.BackgroundTransparency = 1 speedBox.Text = "Speed: " .. tostring(displaySpeed) speedBox.TextColor3 = Color3.fromRGB(255, 255, 255) speedBox.TextSize = 13 speedBox.Font = Enum.Font.GothamMedium speedBox.Parent = speedFrame -- Speed Increase (+) local incBtn = Instance.new("TextButton") incBtn.Size = UDim2.new(0, 35, 1, 0) incBtn.Position = UDim2.new(1, -35, 0, 0) incBtn.BackgroundColor3 = Color3.fromRGB(45, 50, 68) incBtn.Text = "+" incBtn.TextColor3 = Color3.fromRGB(255, 255, 255) incBtn.TextSize = 18 incBtn.Font = Enum.Font.GothamBold incBtn.Parent = speedFrame local incCorner = Instance.new("UICorner") incCorner.CornerRadius = UDim.new(0, 6) incCorner.Parent = incBtn -- Mobile Altitude Controls Container local mobileFrame = Instance.new("Frame") mobileFrame.Size = UDim2.new(1, -20, 0, 40) mobileFrame.Position = UDim2.new(0, 10, 0, 130) mobileFrame.BackgroundTransparency = 1 mobileFrame.Parent = mainFrame local upBtn = Instance.new("TextButton") upBtn.Size = UDim2.new(0.48, 0, 1, 0) upBtn.Position = UDim2.new(0, 0, 0, 0) upBtn.BackgroundColor3 = Color3.fromRGB(52, 152, 219) upBtn.Text = "ASCEND (▲)" upBtn.TextColor3 = Color3.fromRGB(255, 255, 255) upBtn.TextSize = 11 upBtn.Font = Enum.Font.GothamBold upBtn.Parent = mobileFrame local upCorner = Instance.new("UICorner") upCorner.CornerRadius = UDim.new(0, 6) upCorner.Parent = upBtn local downBtn = Instance.new("TextButton") downBtn.Size = UDim2.new(0.48, 0, 1, 0) downBtn.Position = UDim2.new(0.52, 0, 0, 0) downBtn.BackgroundColor3 = Color3.fromRGB(155, 89, 182) downBtn.Text = "DESCEND (▼)" downBtn.TextColor3 = Color3.fromRGB(255, 255, 255) downBtn.TextSize = 11 downBtn.Font = Enum.Font.GothamBold downBtn.Parent = mobileFrame local downCorner = Instance.new("UICorner") downCorner.CornerRadius = UDim.new(0, 6) downCorner.Parent = downBtn -------------------------------------------------------------------------------- -- SPEED LOGIC -------------------------------------------------------------------------------- local function updateSpeedDisplay() displaySpeed = math.clamp(displaySpeed, minSpeed, maxSpeed) speedBox.Text = "Speed: " .. tostring(displaySpeed) end decBtn.MouseButton1Click:Connect(function() displaySpeed = displaySpeed - 5 updateSpeedDisplay() end) incBtn.MouseButton1Click:Connect(function() displaySpeed = displaySpeed + 5 updateSpeedDisplay() end) speedBox.FocusLost:Connect(function() local num = tonumber(speedBox.Text:match("%d+")) if num then displaySpeed = num end updateSpeedDisplay() end) -------------------------------------------------------------------------------- -- FLIGHT LOGIC -------------------------------------------------------------------------------- local function enableFlight() character = LocalPlayer.Character if not character then return end root = character:FindFirstChild("HumanoidRootPart") human = character:FindFirstChildOfClass("Humanoid") if not root or not human then return end attachment = Instance.new("Attachment") attachment.Name = "FlyAttachment" attachment.Parent = root linearVelocity = Instance.new("LinearVelocity") linearVelocity.Attachment0 = attachment linearVelocity.MaxForce = 9e9 linearVelocity.VectorVelocity = Vector3.zero linearVelocity.RelativeTo = Enum.ActuatorRelativeTo.World linearVelocity.Parent = root alignOrientation = Instance.new("AlignOrientation") alignOrientation.Attachment0 = attachment alignOrientation.MaxTorque = 9e9 alignOrientation.Responsiveness = 200 alignOrientation.Mode = Enum.OrientationAlignmentMode.OneAttachment alignOrientation.Parent = root human.PlatformStand = true isFlying = true flyBtn.Text = "DISABLE FLY" flyBtn.BackgroundColor3 = Color3.fromRGB(231, 76, 60) end local function disableFlight() isFlying = false if human then human.PlatformStand = false end if linearVelocity then linearVelocity:Destroy() end if alignOrientation then alignOrientation:Destroy() end if attachment then attachment:Destroy() end flyBtn.Text = "ENABLE FLY" flyBtn.BackgroundColor3 = Color3.fromRGB(46, 204, 113) end flyBtn.MouseButton1Click:Connect(function() if isFlying then disableFlight() else enableFlight() end end) -- Mobile Manual Altitude Buttons upBtn.MouseButton1Down:Connect(function() mobileAscend = 1 end) upBtn.MouseButton1Up:Connect(function() mobileAscend = 0 end) downBtn.MouseButton1Down:Connect(function() mobileAscend = -1 end) downBtn.MouseButton1Up:Connect(function() mobileAscend = 0 end) -- Keyboard Shortcut (PC) UserInputService.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.E then if isFlying then disableFlight() else enableFlight() end end end) -- Main Render Loop RunService.RenderStepped:Connect(function() if not isFlying or not root or not human then return end -- Calculated actual physics speed local actualSpeed = displaySpeed * SPEED_MULTIPLIER local moveDirection = human.MoveDirection local cameraCFrame = Camera.CFrame local finalVelocity = Vector3.zero -- Camera direction vector calculation if moveDirection.Magnitude > 0 then local localCamDirection = Camera.CFrame:VectorToObjectSpace(moveDirection) finalVelocity = (cameraCFrame:VectorToWorldSpace( Vector3.new(localCamDirection.X, 0, localCamDirection.Z) )) * actualSpeed end -- Direct Vertical Adjustments if mobileAscend ~= 0 then finalVelocity = Vector3.new(finalVelocity.X, mobileAscend * actualSpeed, finalVelocity.Z) elseif UserInputService:IsKeyDown(Enum.KeyCode.Space) then finalVelocity = Vector3.new(finalVelocity.X, actualSpeed, finalVelocity.Z) elseif UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then finalVelocity = Vector3.new(finalVelocity.X, -actualSpeed, finalVelocity.Z) end linearVelocity.VectorVelocity = finalVelocity alignOrientation.CFrame = cameraCFrame end) LocalPlayer.CharacterAdded:Connect(function() disableFlight() end)