I am currently working on a DBZ roleplaying game, and the flight script is a bit funky, in the terms that when a player hits an object they will spin out of control and it ruins the effect, i have no idea what i am doing and im mostly just watching youtube tutorials and typing it out into my game. if there is any way to fix the players going nuts when they hit an object that would be helpful. here's the code
local player = game.Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local cam = workspace.CurrentCamera local uis = game:GetService("UserInputService") local idleAnim = char:WaitForChild("Humanoid"):LoadAnimation(script:WaitForChild("FlyIdle")) local forwardAnim = char:WaitForChild("Humanoid"):LoadAnimation(script:WaitForChild("FlyForward")) local aura = char.LowerTorso.FlyTrail local wPressed = false local sPressed = false local aPressed = false local dPressed = false local flying = false uis.InputBegan:Connect(function(key, chat) if chat then return end if key.KeyCode == Enum.KeyCode.F then if flying then --Stop Flying flying = false aura.Enabled = false char.Animate.Disabled = false idleAnim:Stop() forwardAnim:Stop() else --Start Flying flying = true char.Animate.Disabled = true idleAnim:Play() aura.Enabled = true local bv = Instance.new("BodyVelocity", char.PrimaryPart) bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge) bv.Velocity = Vector3.new(0,0,0) bv.Name = "FlightForce" repeat wait(0.1) until flying == false bv:Destroy() end end if key.KeyCode == Enum.KeyCode.W then wPressed = true elseif key.KeyCode == Enum.KeyCode.S then sPressed = true elseif key.KeyCode == Enum.KeyCode.A then aPressed = true elseif key.KeyCode == Enum.KeyCode.D then dPressed = true end end) uis.InputEnded:Connect(function(key) if key.KeyCode == Enum.KeyCode.W then wPressed = false elseif key.KeyCode == Enum.KeyCode.S then sPressed = false elseif key.KeyCode == Enum.KeyCode.A then aPressed = false elseif key.KeyCode == Enum.KeyCode.D then dPressed = false end end) while wait() do if flying then char.PrimaryPart:FindFirstChild("FlightForce").Velocity = Vector3.new(0,0,0) forwardAnim:Stop() if wPressed then char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.LookVector * 200 forwardAnim:Play() end if sPressed then char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.LookVector * -200 forwardAnim:Play() end if aPressed then char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.RightVector * -200 forwardAnim:Play() end if dPressed then char.PrimaryPart:FindFirstChild("FlightForce").Velocity = cam.CFrame.RightVector * 200 forwardAnim:Play() end else wait(1) end end