Why Is Roblox Physics So Frustrating To Work With?

Hello There!
I’ve been trying to make a physics based movement system, and I found out a lot of things which I don’t understand the reason behind, so I put my thoughts to discussion here.

The Default Humanoid Velocity Dampening

If a part is provided an impulse of v3(20,10,20), it should ideally get launched towards that direction, and then land, forming a trajectory of a parabola.

This works for any part which isn’t associated with a humanoid.
Since Humanoids have their Velocity Dampening (feature??) behavior, this is what the same force applied on the hrp of a character results in:

It doesn’t make sense to not have an alternative to Humanoids which actually work with the Roblox Physics.
Right now, Humanoid:Move works on CFramed Increments, and not velocity, not forces. This causes problems when physics is made the base of a game, as shown above.

I would also like to talk about the very weird functioning of LinearVelocity, which is supposed to replace BodyVelocity.

Friction against Velocity-Based Movement

I have a capsule shaped hrp, with a Humanoid. I make an attachment, add a linearVelocity instance, connect it to that attachment, and apply v3(0,10^4,0), which very nicely results in an upward velocity, launching the player upwards.

The problem arises when a force is applied forwards or sideways. Velocity is supposed to be change in Position. Why is it that v3(10^4,0,0) still reacts with the ground friction? Isn’t that supposed to be independent of friction?

Unity’s Rigidbody’s work so well with physics. In those, velocity is velocity. it causes change in position, ignoring friction. Rigidbody’s have a property called Drag to take care of retardation.

It’s super frustrating working with bodyMovers in Roblox, and it does not have to be that way. I don’t understand why these features are necessary, or why these things are happening. Isn’t it time Roblox Studio took physics a little more seriously?

4 Likes

Ive had this exact issue too, i tried making a cluster truck kind of game in roblox, but giving the player the ability to jump between moving trucks just didn’t work, they just stopped midair. Body movers didn’t help either, i’m only now realizing that the only feasible solution would be to make custom humanoids

Roblox improving their humanoid physics, either by allowing us to toggle this, or some other solution, would be incredibly useful to everyone.

I’ve just stopped using humanoids for movement-based systems. If you are using physics, don’t use humanoids.
Instead, I’m using AnimationControllers with meshes. That’s all