-- Define a variable to keep track of whether the player is flying or not local isFlying = false -- Function to enable flying function enableFlying() isFlying = true game:GetService("Players").LocalPlayer.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Physics) -- Set the gravity to zero so the player can float in the air game.Workspace.Gravity = Vector3.new(0,0,0) end -- Function to disable flying function disableFlying() isFlying = false game:GetService("Players").LocalPlayer.Character.Humanoid:ChangeState(Enum.HumanoidStateType.GettingUp) -- Restore the gravity to its original value game.Workspace.Gravity = Vector3.new(0,-workspace.Gravity,0) end -- Check for user input to enable/disable flying game:GetService("UserInputService").InputBegan:Connect(function(input, processed) if processed then return end if input.KeyCode == Enum.KeyCode.Space then if isFlying then disableFlying() else enableFlying() end end end) -- Update the player's position while flying game:GetService("RunService").RenderStepped:Connect(function(deltaTime) if isFlying then local player = game:GetService("Players").LocalPlayer local camera = game.Workspace.CurrentCamera -- Get the input direction from the WASD keys and adjust for camera orientation local inputDirection = (camera.CFrame.lookVector * (game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.W) and 1 or 0) - camera.CFrame.rightVector * (game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.A) and 1 or 0) + camera.CFrame.lookVector * (game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.S) and 1 or 0) + camera.CFrame.rightVector * (game:GetService("UserInputService"):IsKeyDown(Enum.KeyCode.D) and 1 or 0) ) -- Normalize the input direction so that the player moves at a consistent speed inputDirection = inputDirection.unit -- Move the player based on the input direction and the player's speed player.Character.HumanoidRootPart.Velocity = inputDirection * 50 end end)