character_controller_snap_to_ground
If enabled, snap-to-ground will force the character to stick to the ground if the following conditions are met simultaneously:
- At the start of the movement, the character touches the ground.
- The movement has a slight downward component.
- At the end of the desired movement, the character would be separated from the ground by a distance smaller than the distance provided by the snap-to-ground parameter.
If these conditions are met, the character is automatically teleported down to the ground at the end of its motion. Typical usages of snap-to-ground include going downstairs or remaining in contact with the floor when moving downhill.
Snap-to-ground is configured with r3KinematicCharacterController_SetSnapToGround, which takes whether it is enabled,
and the snapping distance as an R3CharacterLength (see the character offset):
// Set `enabled` (the second argument) to 0 to disable snap-to-ground (the distance is then ignored).
r2KinematicCharacterController_SetSnapToGround(character_controller, 0, (R2CharacterLength){0});
// Snap to the ground if the vertical distance to the ground is smaller than 0.5.
r2KinematicCharacterController_SetSnapToGround(character_controller, 1,
(R2CharacterLength){.value = 0.5, .relative = 0});
// Snap to the ground if the vertical distance to the ground is smaller than 0.2 times the character's height.
r2KinematicCharacterController_SetSnapToGround(character_controller, 1,
(R2CharacterLength){.value = 0.2, .relative = 1});