local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local rootPart = character:WaitForChild("HumanoidRootPart") local flying = false local flySpeed = 50 -- Speed at which the player flies local function startFlying() flying = true local bodyVelocity = Instance.new("BodyVelocity") bodyVelocity.MaxForce = Vector3.new(1000000, 1000000, 1000000) bodyVelocity.Velocity = Vector3.new(0, 0, 0) bodyVelocity.Parent = rootPart local userInputService = game:GetService("UserInputService") while flying do local moveDirection = Vector3.new(0, 0, 0) if userInputService:IsKeyDown(Enum.KeyCode.W) then moveDirection = moveDirection + workspace.CurrentCamera.CFrame.LookVector end if userInputService:IsKeyDown(Enum.KeyCode.S) then moveDirection = moveDirection - workspace.CurrentCamera.CFrame.LookVector end if userInputService:IsKeyDown(Enum.KeyCode.A) then moveDirection = moveDirection - workspace.CurrentCamera.CFrame.RightVector end if userInputService:IsKeyDown(Enum.KeyCode.D) then moveDirection = moveDirection + workspace.CurrentCamera.CFrame.RightVector end if userInputService:IsKeyDown(Enum.KeyCode.Space) then moveDirection = moveDirection + Vector3.new(0, 1, 0) end if userInputService:IsKeyDown(Enum.KeyCode.LeftShift) then moveDirection = moveDirection - Vector3.new(0, 1, 0) end bodyVelocity.Velocity = moveDirection * flySpeed wait(0.1) end end local function stopFlying() flying = false rootPart:FindFirstChild("BodyVelocity"):Destroy() end -- Toggle fly on and off with the "F" key game:GetService("UserInputService").InputBegan:Connect(function(input) if input.KeyCode == Enum.KeyCode.F then if flying then stopFlying() else startFlying() end end end)