Player gets pulled down before even landing?

  1. What do you want to achieve?
    I want the player to land smoothly.

  2. What is the issue?
    They get pulled down quickly before even landing, for some reason.

  3. What solutions have you tried so far?
    I tried changing the gravity, but that doesn’t work.
    I also tried making the character massless but unfortunately, it’s the same thing.

I don’t know if this post belongs to bug reports, but I can’t post there either way so…
Anyway, this might be just another quirk of Roblox’s physics engine.
I really don’t want to make a custom one because that would take a whole lot of time.

Is there any way to fix this?
Thanks for reading :slight_smile:

I can’t see that you get pulled down, but you’re going up. Also, do you have any scripts ? If not, then please go to #bug-reports

1 Like

I got pulled down quickly right before landing. There are no scripts affecting the character movement other than one rotating the HumanoidRootPart, but it also happened before I made it.
Also, I don’t have access to #bug-reports, and I wasn’t sure where to post this…

It’s because of R6 and all that internal nonsense.

Using an R15 rig will likely fix the issue.

It’s not a bug.


It happens apparently on both R15 and R6.
Again, I set the gravity to 1.

I believe @SubtotalAnt8185 is correct it is due to humanoids though for both R15 and R6.

Unfortunately we do not access to the internal code for humanoids, however I am assuming Roblox system is done similar to luanoids which achieves the same effect with forces which they used this equation for their hipheight equation.

--Luanoid method of hipheight, works great and rigid however cannot solve for overshoot, ends up bouncy
--Bouncy at low fps, solved using Physics substepping. Hopefully can get acces to 240 Hz physics engine one day.
local function calculateForces(targetHeight, currentHeight, currentYVelocity, t, mass, hipHeight, dt)
    -- counter gravity and then solve constant acceleration eq
    -- (x1 = x0 + v*t + 0.5*a*t*t) for a to aproach target height over time
    local aUp = workspace.Gravity + 2*((targetHeight - currentHeight) - currentYVelocity*t)/(t*t)

--this is in luanoids, the reason for the downward force of -1.
--Presumably done to make the character stick to the ground when walking up slopes and stairs so probably not a bug just intended with humanoids.
    aUp = math.max(-1, aUp) --Limit downward force

    return aUp*mass

You could try setting math.max(0, aUp) to prevent downwards force.

Otherwise that recreates the phenomenon happening at low gravity as you mentioned.

It has been done before, but yes it did take a lot of time.