local lp = game:GetService("Players").LocalPlayer local char = lp.Character or lp.CharacterAdded:Wait() local root = char:WaitForChild("HumanoidRootPart") local hum = char:WaitForChild("Humanoid") local cam = workspace.CurrentCamera local rs = game:GetService("RunService") local uis = game:GetService("UserInputService") local fly = false local speed = 2 rs.Stepped:Connect(function() if fly and char then -- noclip for _, v in pairs(char:GetDescendants()) do if v:IsA("BasePart") then v.CanCollide = false end end -- anti drift root.Velocity = Vector3.new(0, 0, 0) local dir = Vector3.new(0,0,0) if uis:IsKeyDown(Enum.KeyCode.W) then dir = dir + cam.CFrame.LookVector end if uis:IsKeyDown(Enum.KeyCode.S) then dir = dir - cam.CFrame.LookVector end if uis:IsKeyDown(Enum.KeyCode.A) then dir = dir - cam.CFrame.RightVector end if uis:IsKeyDown(Enum.KeyCode.D) then dir = dir + cam.CFrame.RightVector end if dir.Magnitude > 0 then root.CFrame = root.CFrame + (dir * speed) end end end) uis.InputBegan:Connect(function(io, typing) if typing then return end if io.KeyCode == Enum.KeyCode.Two then fly = true hum.PlatformStand = true elseif io.KeyCode == Enum.KeyCode.Nine then fly = false hum.PlatformStand = false for _, v in pairs(char:GetDescendants()) do if v:IsA("BasePart") then v.CanCollide = true end end end end)