Browse Source

Make sure stop on slope can have a tiny bit of precision edge.

Juan Linietsky 6 years ago
parent
commit
c54330c6b0
2 changed files with 2 additions and 2 deletions
  1. 1 1
      scene/2d/physics_body_2d.cpp
  2. 1 1
      scene/3d/physics_body.cpp

+ 1 - 1
scene/2d/physics_body_2d.cpp

@@ -1290,7 +1290,7 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2 &p_linear_velocity, const
 						floor_velocity = collision.collider_vel;
 
 						if (p_stop_on_slope) {
-							if (Vector2() == lv_n + p_floor_direction && collision.travel.length() < 1) {
+							if ((lv_n + p_floor_direction).length() < 0.01 && collision.travel.length() < 1) {
 								Transform2D gt = get_global_transform();
 								gt.elements[2] -= collision.travel.project(p_floor_direction.tangent());
 								set_global_transform(gt);

+ 1 - 1
scene/3d/physics_body.cpp

@@ -1222,7 +1222,7 @@ Vector3 KinematicBody::move_and_slide(const Vector3 &p_linear_velocity, const Ve
 						floor_velocity = collision.collider_vel;
 
 						if (p_stop_on_slope) {
-							if (Vector3() == lv_n + p_floor_direction) {
+							if ((lv_n + p_floor_direction).length() < 0.01) {
 								Transform gt = get_global_transform();
 								gt.origin -= collision.travel;
 								set_global_transform(gt);