The new character controller is a better improvement to the current one. It would be better if it was not so easy to have the characters glitch with anything using A-Chassis. Right now with the controller I am having problem where the characters would glitch though solid parts or fling it.
You can’t jump off of platforms easily anymore, you just fall down. This also makes jumps like head-hitters either physically impossible or frame perfect.
Old behavior:
new behavior:
Why not add these changes to the old controller though?
This is huge. Can’t wait for it to roll out and games to take advantage of it!
What exactly is PhysicsCharacterController? Is it another class or a custom made module?
PhysicsCharacterController is a module made by dthecoolest. It gives characters physics-based movement with momentum, similar to this, but lacks climbing, swimming, Humanoid:MoveTo() (the player doesn’t walk anywhere because this module makes them PlatformStand) and (I assume) momentum transferring when jumping on moving objects.
There is a lot that I really, really like about this and a lot it does WAY better than the original system. My mind was absolutely blown when I realized the character can now exert friction and forces onto parts THEY ARE WALKING ON. I have some push-able crates with a super tiny density in my game and I was shocked when walking on them could nudge them. I also love that this system has eliminated the tiny bounces that can happen when humanoids fall from great heights, which were huge annoyances for my jump-state bounce pads.
However, as many have stated here, there are a lot of glaring issues. Non-standard stairs completely ragdoll the player, airtime velocities are applied that cannot be toggled off or modified, physics when standing on non-linear moving unanchored parts can be unreliable, and of course, the wall stick (jumping against literally any wall.)
I am really looking forward to the future of this system, and I hope that these problems are ironed out. Using it in my own platformer, almost everything was fully playable! It’s just those teeny tiny issues that ruin it for me.
When you bump into objects, your character will rotate. This issue occurs with the old humanoid controller as well.
It would be great if we could easily lock the rotation of the character so it can only spin around the Y axis.
A way to override the turning behavior would also be great. Humanoids only turn while the player is holding a movement direction. I want to be able to do things like complete the turn in the last direction they went even if they let go of the keys.
You should be able to solve the first issue by toggling RigidityEnabled
on the GroundControllers.
For your second point, this will be possible and we’ll have a separate announcement soon.
weeeeee
also for AccelerationTime, i at first thought there’s no way to make smooth movement with it but realized they were for air controlling manager although i love it but it’s still buggy for R6 when there is ControllerManager added.
HipHeight with ControllerManager
HipHeight is now dismatched compared to non-physics movement if i added it for my game which my leg seems to collide through the ground although the fix is to set Humanoid in StarterPlayer to 2.
No Physics Controller
HipHeight is also now defined on the GroundControllers as a
GroundOffset
property.
We currently don’t sync between the Humanoid.HipHeight and the GroundOffset on GroundControllers, but will be looking into how to make it simpler.
Right now, if you set up with only a StarterHumanoid
and ControllerManager
as shown in the original post, then the GroundOffset should be set correctly for your avatar size. In any other case you’ll need to set it on the GroundControllers directly.
Controller Beta Update - v0.2
Hello developers! I again want to thank everyone for their feedback and bug reports. It’s very important to us and we’ll continue to take everything into account so this system is perfect.
Here’s some changes that we enabled today that address some of your concerns:
- Deleting a Controller while running no longer results in crash
- Turning towards your FacingDirection now always rotates with the shortest distance rather than sometimes rotating over 180 degrees.
- GroundController now decelerates from your current speed rather than the top speed. This should address everyone’s running acceleration/deceleration concerns.
- The AirController.VectorForce value on the default JumpController should now better match the behavior with Humanoid.JumpPower.
- We still do not have support for configuring your jump height. As a workaround, you can view conversions between JumpPower and JumpHeight values based on your gravity setting from Game Settings > World.
- Increased internal friction limits so walking up very steep slopes is possible (like on the old controller)
- This unfortunately caused a new bug where tipping over from running into a wall is significantly easier. You can work around this by setting
RigidityEnabled = true
on the RunningController. Alternatively you can lower Friction.
- This unfortunately caused a new bug where tipping over from running into a wall is significantly easier. You can work around this by setting
Also, here’s a list of existing known issues and requests that are being worked on now:
- The aforementioned tipping over bug. We are also looking into how to make this more stable and customizable. This should also address issues
- Adding the ability to disable linear and angular momentum preservation in the air independently.
- Issues related to particular constraint combinations used in combination with the new controller.
- Fixing buggy stair climbing and swimming.
Seems like a great update! But i have a question many have also been wondering, will this be for r6 too, and will we be able to disable/enable it?
This has been outlined a few times already.
It’s for all characters, the rig type is irrelevant. It will eventually replace the existing controller, no option.
For compatibility with older systems, will the controller respond to changes in Humanoid.WalkSpeed
, Humanoid.JumpPower
, and other properties?
What about the obbying community? Will the new controller on full release use almost the same physics as the legacy controller?
We are looking into it. There’s a couple issues with having a property set on one instance set the property on another, but we’ll find some way so that old games won’t need to change.
For new work, I’d recommend getting comfortable setting ControllerManager.BaseMoveSpeed
and AirController.VectorForce
instead.
The entire purpose of having a Beta and opt-in period is so we can gather feedback to make the new controller meet all the same behaviors the old one had.
for something in beta, it has pre-alpha bugs. It’s unusable and untested. Constant flinging and tripping. This would be so much better if it were actually stable.
I love this
all jokes aside this is an incredible update! hopefully will get an R6 port or update but I can see this changing alot of games really well :0