Browse Source

Fix 3D character snap on moving platforms

Applying the platform velocity when leaving the platform floor should be
done after snapping to keep things consistent, like it's done in 2D.
PouleyKetchoupp 4 năm trước cách đây
mục cha
commit
2084bb5eb9
1 tập tin đã thay đổi với 5 bổ sung5 xóa
  1. 5 5
      scene/3d/physics_body_3d.cpp

+ 5 - 5
scene/3d/physics_body_3d.cpp

@@ -1176,11 +1176,6 @@ bool CharacterBody3D::move_and_slide() {
 		}
 	}
 
-	if (!on_floor && !on_wall) {
-		// Add last platform velocity when just left a moving platform.
-		linear_velocity += current_floor_velocity;
-	}
-
 	if (was_on_floor && snap != Vector3()) {
 		// Apply snap.
 		Transform3D gt = get_global_transform();
@@ -1213,6 +1208,11 @@ bool CharacterBody3D::move_and_slide() {
 		}
 	}
 
+	if (!on_floor && !on_wall) {
+		// Add last platform velocity when just left a moving platform.
+		linear_velocity += current_floor_velocity;
+	}
+
 	return motion_results.size() > 0;
 }