I’ve been tinkering all day with Bullet, learning my way through.
The class panda3d.bullet.BulletCharacterControllerNode instanciates a btKinematicCharacterController from the bullet engine.
The idea is that you don’t want to manipulate characters the way you manipulate a crate: characters don’t bounce, characters know how to stand still, how to remain vertical, they have a volition, etc… We control their velocity, not their forces.
Sounded good, so I test it in the simplest environment ever: Wolfenstein3D.
I can’t get half of it to behave decently:
- the collision response is jerky, there is a tremendous jitter when you push against a wall, whether you slide or not.
- setMaxJumpHeight has no effect at all.
- jumping works, but any other kind of free fall occurs at the speed of light and snaps you to the nearest floor instantly.
- the step_height works, but only if your shape is a cylinder: the capsule (which is the recommended shape) shape gives super messy results.
- you ‘slide’ down every slope, even if the slope is at 1 %. And by ‘slide’ I mean “violently jitter your way down”.
According to quite a lot of googling, that’s not Panda’s fault, that’s a common issue with Bullet’s btKinematicCharacterController. But that makes me curious, because this really seems to be a key feature and it’s been bugged for years.
Questions to the community:
How do people work around this?
Has anyone managed to use BulletCharacterControllerNode with success?