Ad
Log in to vote
0

Help with players spazzing out when hitting objects while flying using flight script?

Asked by 3 days ago

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
0
Try setting bv.MaxForce to something lower, like Vector3.new(25000, 25000, 25000). Neatwyy 20 — 3d
0
This worked Thanks! NotoriousCrimson 0 — 3d

Answer this question