Character Controller

Capsule character

A character controller is used to move around characters in the physics world. The character is simplified down to a bounding volume and when it moves it does not do it in a physically realistic way. That is mostly evident on the player character in third-person or first-person games.

Dynamic vs Kinematic

There are two ways to make the character controller interact with the rest of the physics way. It can be dynamic or kinematic. With a Dynamic CC you get the basic physic and then you add special cases for when you do not need physics. With a Kinematic CC you add the special cases to get the everything including the physics to work.

Dynamic CC

A DCC is added as a shape to the physics system with a limit on rotation so it does not fall over. To move it around set the velocity or force.

Kinematic CC

Bounding volume

The character controller use a bounding volume to simulate the character and the two common ones are an AABB or a capsule.

    • An AABB has fixed rotation to avoid the problem of the player getting stuck when rotating. It is made up of a center position and an size vector.

    • A capsule has a center position, a height and a radius. The height is the distance between the two spheres at end end of the capsule. A capsule is a better choice for climbing stairs.

Changing volume

A way to change the size of the character volume if he crouch for example.

Auto Stepping

Moving

Links

https://forum.unity3d.com/threads/the-limitations-of-the-physics-api-and-creating-a-character-controller.142375/

btKinematicCharacterController.

btDynamicCharacterController

http://stackoverflow.com/questions/25605659/avoid-ground-collision-with-bullet/25725502#25725502

https://www.panda3d.org/manual/index.php/Bullet_Character_Controller

https://hub.jmonkeyengine.org/t/character-controllers-and-collisions/31318