瀏覽代碼

Fixed using move_and_slide with stop_on_slope stopping too early

This makes it stop exactly on the slope, I'm not 100% sure if this if this is the correct fix let me know what you think.

Fixes #23675
DualMatrix 6 年之前
父節點
當前提交
86472ad5a9
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      scene/2d/physics_body_2d.cpp

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

@@ -1293,7 +1293,7 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2 &p_linear_velocity, const
 						if (p_stop_on_slope) {
 							if (Vector2() == lv_n + p_floor_direction) {
 								Transform2D gt = get_global_transform();
-								gt.elements[2] -= collision.travel;
+								gt.elements[2] -= collision.travel.project(p_floor_direction.tangent());
 								set_global_transform(gt);
 								return Vector2();
 							}