Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How would I make it so a character's velocity/momentum does not cancel out when they jump/fall?

Asked by
A_Mp5 222 Moderation Voter
2 years ago

I'm creating a game that involves moving parts mid-air. I've run into a problem when the character jumps or falls (falling only applies for this if network ownership is under another player), all of their momentum/velocity is lost. This is an issue because laggy people and/or jumping will cause a player to lose their momentum mid-air, which is not intended behavior.

Here is the script I've tried. This was made in under 5 minutes, don't worry about how it is formatted or done, I just need to know how to make the character keep their momentum when moving off a moving object.

local char = script.Parent
local hum = script.Parent:WaitForChild("Humanoid")
local root = script.Parent:WaitForChild("HumanoidRootPart")

local states = {Enum.HumanoidStateType.Freefall,Enum.HumanoidStateType.Jumping}
local prev
local updating = true

game["Run Service"].RenderStepped:Connect(function()
    if updating then
        prev = root.AssemblyLinearVelocity
    end
end)

hum.StateChanged:Connect(function(state)
    print(state)
    local falling = false
    for i,v in pairs(states) do
        if v == state then
            falling = true
        end
    end
    if falling == true then
        updating = false
        root.AssemblyLinearVelocity = prev

    else
        updating = true
    end
end)

Answer this question