Fix the prevention for sliding on slopes in the 2d version of move_and_slide
Done by using the same method the 3d counterpart uses. Fixes #13063.
This commit is contained in:
parent
ecf80fbbba
commit
7dd9e5c57c
1 changed files with 4 additions and 1 deletions
|
@ -1028,7 +1028,10 @@ Vector2 KinematicBody2D::move_and_slide(const Vector2 &p_linear_velocity, const
|
|||
on_floor = true;
|
||||
floor_velocity = collision.collider_vel;
|
||||
|
||||
if (collision.travel.length() < 1 && ABS((lv.x - floor_velocity.x)) < p_slope_stop_min_velocity) {
|
||||
Vector2 rel_v = lv - floor_velocity;
|
||||
Vector2 hv = rel_v - p_floor_direction * p_floor_direction.dot(rel_v);
|
||||
|
||||
if (collision.travel.length() < 1 && hv.length() < p_slope_stop_min_velocity) {
|
||||
Transform2D gt = get_global_transform();
|
||||
gt.elements[2] -= collision.travel;
|
||||
set_global_transform(gt);
|
||||
|
|
Loading…
Reference in a new issue