-- LocalScript - place in StarterPlayerScripts or inside a ScreenGui local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local hrp = char:WaitForChild("HumanoidRootPart") -- Vars local flying = false local speed = 50 local speedStep = 10 local control = {F = 0, B = 0, L = 0, R = 0, U = 0, D = 0} local bodyGyro, bodyVelocity -- GUI local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui")) gui.Name = "FlyGui" gui.ResetOnSpawn = false local frame = Instance.new("Frame", gui) frame.Size = UDim2.new(0, 200, 0, 320) -- Adjusted height for removed button frame.Position = UDim2.new(0, 20, 0.5, -115) frame.BackgroundColor3 = Color3.fromRGB(30, 30, 30) frame.BorderSizePixel = 0 frame.BackgroundTransparency = 0.1 frame.Active = true frame.Draggable = true Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 8) -- Title local title = Instance.new("TextLabel", frame) title.Size = UDim2.new(1, 0, 0, 30) title.Position = UDim2.new(0, 0, 0, 0) title.BackgroundTransparency = 1 title.Text = "🌠 Fly GUI 🌠" title.Font = Enum.Font.GothamBold title.TextColor3 = Color3.new(1, 1, 1) title.TextSize = 18 -- Instructions (adjusted position) local instructions = Instance.new("TextLabel", frame) instructions.Size = UDim2.new(1, -20, 0, 60) instructions.Position = UDim2.new(0, 10, 0, 220) -- Adjusted to move it down instructions.BackgroundTransparency = 1 instructions.Text = "Use W, A, S, D for movement\nPress E to go up, Q to go down\nUse Speed + and Speed - to adjust speed" instructions.Font = Enum.Font.GothamSemibold instructions.TextColor3 = Color3.new(1, 1, 1) instructions.TextSize = 12 instructions.TextWrapped = true instructions.TextYAlignment = Enum.TextYAlignment.Top -- "Made By" text (added) local madeBy = Instance.new("TextLabel", frame) madeBy.Size = UDim2.new(1, -20, 0, 30) madeBy.Position = UDim2.new(0, 10, 0, 280) -- Placed under instructions madeBy.BackgroundTransparency = 1 madeBy.Text = "Made By FallenTDS" madeBy.Font = Enum.Font.Bodoni madeBy.TextColor3 = Color3.new(1, 1, 1) madeBy.TextSize = 14 madeBy.TextWrapped = true madeBy.TextYAlignment = Enum.TextYAlignment.Top -- Buttons for flying and speed adjustment local function makeButton(name, yPos, color) local btn = Instance.new("TextButton", frame) btn.Size = UDim2.new(1, -20, 0, 35) btn.Position = UDim2.new(0, 10, 0, yPos) btn.BackgroundColor3 = color btn.TextColor3 = Color3.new(1, 1, 1) btn.Font = Enum.Font.GothamSemibold btn.TextSize = 14 Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 6) return btn end local flyBtn = makeButton("Fly", 40, Color3.fromRGB(60, 120, 255)) flyBtn.Text = "Fly" local unflyBtn = makeButton("Unfly", 80, Color3.fromRGB(255, 80, 80)) unflyBtn.Text = "Unfly" local speedUpBtn = makeButton("Speed+", 130, Color3.fromRGB(60, 200, 80)) speedUpBtn.Text = "Speed +" local speedDownBtn = makeButton("Speed-", 170, Color3.fromRGB(200, 200, 80)) speedDownBtn.Text = "Speed -" -- Fly Logic local function startFlying() if flying then return end flying = true bodyGyro = Instance.new("BodyGyro") bodyGyro.P = 9e4 bodyGyro.maxTorque = Vector3.new(9e9, 9e9, 9e9) bodyGyro.CFrame = hrp.CFrame bodyGyro.Parent = hrp bodyVelocity = Instance.new("BodyVelocity") bodyVelocity.Velocity = Vector3.new(0, 0.1, 0) bodyVelocity.MaxForce = Vector3.new(9e9, 9e9, 9e9) bodyVelocity.Parent = hrp end local function stopFlying() flying = false if bodyGyro then bodyGyro:Destroy() end if bodyVelocity then bodyVelocity:Destroy() end end -- Update movement RunService.RenderStepped:Connect(function() if flying and bodyVelocity and bodyGyro then local cam = workspace.CurrentCamera local moveVec = Vector3.zero moveVec += cam.CFrame.LookVector * (control.F - control.B) moveVec += cam.CFrame.RightVector * (control.R - control.L) moveVec += Vector3.new(0, control.U - control.D, 0) if moveVec.Magnitude > 0 then bodyVelocity.Velocity = moveVec.Unit * speed else bodyVelocity.Velocity = Vector3.zero end bodyGyro.CFrame = cam.CFrame end end) -- Inputs UIS.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.W then control.F = 1 end if input.KeyCode == Enum.KeyCode.S then control.B = 1 end if input.KeyCode == Enum.KeyCode.A then control.L = 1 end if input.KeyCode == Enum.KeyCode.D then control.R = 1 end if input.KeyCode == Enum.KeyCode.E then control.U = 1 end if input.KeyCode == Enum.KeyCode.Q then control.D = 1 end end) UIS.InputEnded:Connect(function(input) if input.KeyCode == Enum.KeyCode.W then control.F = 0 end if input.KeyCode == Enum.KeyCode.S then control.B = 0 end if input.KeyCode == Enum.KeyCode.A then control.L = 0 end if input.KeyCode == Enum.KeyCode.D then control.R = 0 end if input.KeyCode == Enum.KeyCode.E then control.U = 0 end if input.KeyCode == Enum.KeyCode.Q then control.D = 0 end end) -- Button connections flyBtn.MouseButton1Click:Connect(startFlying) unflyBtn.MouseButton1Click:Connect(stopFlying) speedUpBtn.MouseButton1Click:Connect(function() speed += speedStep speedUpBtn.Text = "Speed + ("..speed..")" end) speedDownBtn.MouseButton1Click:Connect(function() speed = math.max(10, speed - speedStep) speedDownBtn.Text = "Speed - ("..speed..")" end)