-- LocalScript (StarterPlayerScripts or StarterCharacterScripts) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local root = character:WaitForChild("HumanoidRootPart") local camera = workspace.CurrentCamera local FLY_SPEED = 60 local flying = false local moveUp = false local moveDown = false local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(1e6,1e6,1e6) local bg = Instance.new("BodyGyro") bg.MaxTorque = Vector3.new(1e6,1e6,1e6) bg.P = 10000 local function anim(id) local a = Instance.new("Animation") a.AnimationId = "rbxassetid://"..id return humanoid:LoadAnimation(a) end local Hover = anim(97171309) local SlowFly = anim(97169019) local FastFly = anim(282574440) local UpAnim = anim(90872539) local DownAnim = anim(233322916) local function stopAnimations() Hover:Stop() SlowFly:Stop() FastFly:Stop() UpAnim:Stop() DownAnim:Stop() end local gui = Instance.new("ScreenGui") gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local flyBtn = Instance.new("TextButton") flyBtn.Size = UDim2.new(0,120,0,50) flyBtn.Position = UDim2.new(1,-130,0,20) flyBtn.Text = "FLY OFF" flyBtn.Parent = gui local upBtn = Instance.new("TextButton") upBtn.Size = UDim2.new(0,70,0,70) upBtn.Position = UDim2.new(1,-90,1,-180) upBtn.Text = "↑" upBtn.Parent = gui local downBtn = Instance.new("TextButton") downBtn.Size = UDim2.new(0,70,0,70) downBtn.Position = UDim2.new(1,-90,1,-100) downBtn.Text = "↓" downBtn.Parent = gui upBtn.MouseButton1Down:Connect(function() moveUp = true end) upBtn.MouseButton1Up:Connect(function() moveUp = false end) downBtn.MouseButton1Down:Connect(function() moveDown = true end) downBtn.MouseButton1Up:Connect(function() moveDown = false end) flyBtn.MouseButton1Click:Connect(function() flying = not flying if flying then flyBtn.Text = "FLY ON" bv.Parent = root bg.Parent = root humanoid.PlatformStand = true else flyBtn.Text = "FLY OFF" bv.Parent = nil bg.Parent = nil humanoid.PlatformStand = false stopAnimations() end end) RunService.RenderStepped:Connect(function() if not flying then return end local moveDir = humanoid.MoveDirection local dir = moveDir if moveUp then dir += Vector3.new(0,1,0) end if moveDown then dir -= Vector3.new(0,1,0) end if dir.Magnitude > 0 then dir = dir.Unit end bv.Velocity = dir * FLY_SPEED bg.CFrame = camera.CFrame stopAnimations() if moveUp then UpAnim:Play() elseif moveDown then DownAnim:Play() elseif moveDir.Magnitude > 0 then SlowFly:Play() else Hover:Play() Hover:AdjustSpeed(0) end end)