ControllerManager cannot move while in FreeFall

I’m currently trying to make some NPCs jump with the new Custom Character systems (ControllerManager, GroundController, and ControllerPartSensor).

However, I’ve noticed that they can’t jump horizontally reliably. This is because it seems like it doesn’t want to update the assembly velocity until it is on the ground, which can be hard to work around.

Here’s a video showing the custom character always moving in 1 direction while falling. You’ll notice that once it loses some momentum, it will stay in place until it lands firmly on the ground. (Other than connecting them all up, they’re all using default variables, this seems like hardcoded behaviour)

Ideally I would want it to move similar to the Player Character where the move direction keeps constantly pushing it no matter if it’s on the ground or not. Then if I want behaviour similar to what is seen in the video, I would simply check if the sensedpart is nil, and stop moving the character.

You can work around this by manually setting the assembly linear velocity yourself, but it effectively requires you to ignore ControllerManager.MovingDirection altogether and move it through different means.

Repro place:
CharacterControllerFreeFall.rbxl (59.5 KB)

6 Likes

It seems to be because of the friction caused by the character’s legs hitting the ground. Disabling collisions on the legs fixes the issue.

Thanks for the report! We’ll take a look.

2 Likes

The GroundController will only apply a force to move the character if it’s on the ground. If you want movement/forces in the air, you need to use an AirController and activate it whenever the character isn’t on the Ground.

The momentum appears to stop immediately due to the friction the character has when hitting the ground.

3 Likes

I haven’t used these systems yet, but I would assume that if I tell the ground controller to maintain a movement, the only friction slowing it down should be from the air, not from the ground. In this case, it seems that the bounces don’t allow the ground controller any chance to move the character again until it is fully grounded.

1 Like

Alright, after some testing based on the replies, there’s not any real critical issues other than the bouncing weirdly halting the assembly linear velocity.

Simply swapping to aircontroller when necessary and / or removing collision on legs fixes the issue

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.