diff options
author | fabriceci <fabricecipolla@gmail.com> | 2022-03-09 13:45:42 +0100 |
---|---|---|
committer | fabriceci <fabricecipolla@gmail.com> | 2022-03-09 13:45:42 +0100 |
commit | 7f47889a5f70a29701a3571809fb4c1c7dae917a (patch) | |
tree | 67d2c57f3024358461db1dad99f9355ec21897a3 | |
parent | 86b0faf2ec3b76a09e898fcaa7dbfdd56189bed8 (diff) |
Avoid directional correction when the motion is downward
-rw-r--r-- | scene/3d/physics_body_3d.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp index c1f5ab1d32..47baa9e023 100644 --- a/scene/3d/physics_body_3d.cpp +++ b/scene/3d/physics_body_3d.cpp @@ -1425,7 +1425,7 @@ void CharacterBody3D::_move_and_slide_grounded(double p_delta, bool p_was_on_flo const PhysicsServer3D::MotionCollision &collision = result.collisions[0]; Vector3 slide_motion = result.remainder.slide(collision.normal); - if (collision_state.floor && !collision_state.wall) { + if (collision_state.floor && !collision_state.wall && !motion_slide_up.is_equal_approx(Vector3())) { // Slide using the intersection between the motion plane and the floor plane, // in order to keep the direction intact. real_t motion_length = slide_motion.length(); |