From b461d028df09f8715646ca476e30693121777f31 Mon Sep 17 00:00:00 2001 From: Jan Hohenheim Date: Sat, 4 Feb 2023 19:41:01 +0100 Subject: Remove overzealous ground-snapping --- src/control/character_controller.rs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/control/character_controller.rs b/src/control/character_controller.rs index 24ccc6c..5812d2e 100644 --- a/src/control/character_controller.rs +++ b/src/control/character_controller.rs @@ -193,7 +193,7 @@ impl KinematicCharacterController { let mut translation_remaining = desired_translation; - self.detect_grounded_status_and_apply_friction( + let grounded_at_starting_pos = self.detect_grounded_status_and_apply_friction( dt, bodies, colliders, @@ -294,18 +294,19 @@ impl KinematicCharacterController { break; } } - - // If needed, snap to the ground. - self.snap_to_ground( - bodies, - colliders, - queries, - character_shape, - &(Translation::from(result.translation) * character_pos), - &dims, - filter, - &mut result, - ); + // If needed, and if we are not already grounded, snap to the ground. + if grounded_at_starting_pos { + self.snap_to_ground( + bodies, + colliders, + queries, + character_shape, + &(Translation::from(result.translation) * character_pos), + &dims, + filter, + &mut result, + ); + } // Return the result. result -- cgit