summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfabriceci <fabricecipolla@gmail.com>2022-03-09 13:45:42 +0100
committerfabriceci <fabricecipolla@gmail.com>2022-03-09 13:45:42 +0100
commit7f47889a5f70a29701a3571809fb4c1c7dae917a (patch)
tree67d2c57f3024358461db1dad99f9355ec21897a3
parent86b0faf2ec3b76a09e898fcaa7dbfdd56189bed8 (diff)
Avoid directional correction when the motion is downward
-rw-r--r--scene/3d/physics_body_3d.cpp2
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();