New Humanoid Physics Controller - Beta


This might be a tall ask but I wanted to get my request in early, or at least put this on the table somewhere – is there any possibility of support for manipulating an UpVector of a Character via the GroundController or the Humanoid Object? Maybe an UpVector property that would let the developer set the Upwards direction of a character thus making it easier to create games where certain gravity needs would call for the character to be oriented in different directions (i.e, walking on the side of a spaceship, walking around a planet in proper oriented space, walking around complex objects Super Mario Gravity-style). Even if this wouldn’t be supported by the game’s internal gravity, having the ability to simply rotate the character safely on the engine via these objects would significantly improve backend development for a project I’m working on.

Support for this on the engine would also mean access to Humanoid states & events that are difficult to access on a Custom Character Controller which these desired effects currently require.


As I usually do with each update, I’ve tested this character controller again and found some more bugs! Ignoring the known bug mentioned in the latest update post, here’s three things I’ve noticed that should probably be corrected:


for some reason it reminded me of old games


Thanks again!

The first one is a neat find, I’ll try to look into what’s causing that. Were all Controllers using the default property values for this?

For the second, I think this is just due to your GroundController’s Friction. With a lower friction, you’ll slide more after landing. GroundController.DecellerationTime isn’t taken into account in this situation, but maybe it should to keep things consistent.

And for the third, this is tunable via the AirController’s MoveMaxForce property. A higher force means you have more immediate control over your air movement, try lowering this value.


Not a tall ask at all! Having a customizable UpVector is planned, it’s mentioned in the FAQ on the main post. Customizing states is coming too.


@kleptonaut Hey, i was wondering if that new Humanoid Physics Controller fix Knockback issues, all my combat systems have issues with Knockback, usually take a delay time to player Knockback cause Humanoid issues, hope that new Controller fix my problems.

1 Like


No, I customized them. I moved all of the instances out of ControllerManager (so it generated the default settings) and I can say that now the first glitch doesn’t happen.

However, I’ve found another way to make my character fall down and “become a helicopter”; On my test map, there’s a block attached to a rope. If I move against it to make it start swinging wildly, then I jump onto it while its side is facing upwards, my character tilts sideways strangely, then once she hits the ground, she starts spinning uncontrollably. Here’s a video of the glitch; I’m using default values here:

Since this bug is probably pretty specific, should I try to make a reproduction RBXL file and attach it to a new post?

Maybe. Also, yeah, it should probably be consistent; What I like about PhysicsCharacterController is how consistent the momentum and movement are. I can jump, change directions, and my momentum smoothly transitions between the states. The video I posted here doesn’t show that, but I would like to see the new official character controller have as “slippery and smooth” of movement as it.

I’ll have to try that sometime.

I hope my posts in this topic don’t come off as harsh or anything close to that; I do like that Roblox’s improving the default character movement with proper physics, but ever since I tried PhysicsCharacterController, I’ve started to wonder if the official one will be as smooth and (nearly) glitch-free.

(PhysicsCharacterController has one almost fatal flaw; Any kind of lag bounces the player into the sky. The official one, as far as I know, doesn’t have that bug, so it’s better in that way.)

1 Like

Switching characters to r6 makes your legs noclip through the floor?


Thank you! Should’ve checked that first.


Check the RunningController.GroundOffset property. Depending on how you’re initializing the Controller instances, it may not be automatically set accurately. This property is more or less equivalent to Humanoid.HipHeight.


This is because the default HipHeight for R6 is set to 0. For the standard controller, R6 rigs will automatically adjust the height depending on the size of the legs (if there are any), and HipHeight acts more like an offset to the leg height. For R15 rigs and the new character controller, they behave differently and HipHeight will be 2 in most cases, due to it being the leg height instead of the offset to the leg height.

Simply fix this by setting Humanoid.HipHeight to 2 or RunningController.GroundOffset to 2.


there’s also another bug that’s been lasting since the beta and it’s still not fixed

the coyote line might’ve accidentally been deleted while making the beta

the bug is actually really easy to reproduce, just do that same build in this video:
physics coyote line test - YouTube (not intended advertising)
(you can use the keyboard sounds in the bugged behavior clip for reference)

hope the no-coyote-line bug can be fixed soon! @kleptonaut


when you jump and land while moving it shouldnt take time to re-accelerate imo.
you already have the velocity but it acts like you just started walking again
(presumably this is because running and landed got merged into one controller? so landing applies the same things as restarting a run?)

  • Running and LandedGroundController “RunningController”

I only just tried the new controllers today. One thing I did notice, in the posts, was a request to allow the modification of the ‘float’ and ‘sink’ speed while in water.

This has been an issue with water for a long time, and though everyone says ‘you can fix this with a script’ there is something inconsistent with how the density of parts are calculated, and there is no script that can accurately fix the ‘sink/float’ issue for any given character.

Not to mention the other issues that can arise from changing character densities to try and get a non float, non sink situation.

So, not sure if this is something that could or will be addressed with these new controllers, as its not really a ‘movement’ issue, but rather a ‘density’ issue.

However, if there is a way to allow us to even ‘disable’ the calculation of density in water with these new controllers that would be great! Such as a way to say, I want to move in water the same way I would fly in air, with my density not causing me to float nor sink, but to rather just hover in place (and not hover as in remain a constant height above ground, but to remain in place, not sinking or rising)



I’m experiencing issues with manipulating walkspeed while using the new physics controller. Anyone else have the same issue?

1 Like

It’s the primary reason in why I am avoiding the new controller.

1 Like

Is there anyway to only use the “JumpController” of it. I only need to use it because of the momentum preservation so jumping on moving objects and such

Entering and then leaving the Physics state type breaks everything in your character if you have IK Controls. You fling into space going crazy, never to return.
You also have a certain “fly” state if you are using RigidityEnabled with CanCollide parts. It only ends when you enter certain states (like the Physics state)
NPCs attempting to use this new system simply become bugged and are unable to move. Upon further inspection you can see that the important parts of it (like the GroundController) are not present.
Also I am seeing strange situations where players lose the ability to move (sometimes it’s not all the way but you are noticeably slowed down), and sometimes random flinging occurs.
Keep in mind that I am using adaptive time stepping, and have CanCollide body parts so this may be the cause of the problem.

1 Like

Really glad the new physics controller resolves this issue completely:

(There is still a reoccuring issue of when you go up a slope at fast speeds and attempt to jump, clipping into the slope.)

However, an issue I noticed is that if you just so happen to land, hit, or trip anything in any certain way, even when spawning in from falling down, you’re very likely to permanently trip.

Aka, being stuck in a sort of physics state. You’re completely unable to move or recover. Adjusting the settings, disabling any other character scripts I made, and other random tid bits did not work.

Also, while messing around, apperently adjusting the “AssemblyLinearVelocity” on the root part on the client side of the character sends the character to flying mode? It also seems to pause or get stuck:

Also, as a result of messing up the AssemblyLinearVelocity with a sudden impulse, you’re actually able to control the character and basically make a makeshift flying mode.

You can see me having certain control over the flying, though the character “slowly” begins to drop down.

To replicate:

  1. Trip character by either tilting the character via rotate tool or simply flying out of a slope at high speed into an obstacle/tripping randomly.
  2. Go to Root part
  3. Set “AssemblyLinearVelocity” to a random high value, preferably on the Y value.
  4. Try moving.

@Seiiyo @Veesuuu
For now, changing the WalkSpeed property on the Humanoid will not work. You’ll need to adjust the BaseMoveSpeed on the ControllerManager instead.
If you want to change the speed individually for each controller (for example, have a faster walk speed and a slower climb speed), you can adjust the MoveSpeedFactor property on the Controller instances. This is multiplied by ControllerManager.BaseMoveSpeed to give you your final target speed.

1 Like