summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPouleyKetchoupp <pouleyketchoup@gmail.com>2021-08-17 07:18:22 -0700
committerPouleyKetchoupp <pouleyketchoup@gmail.com>2021-08-17 07:18:22 -0700
commit2084bb5eb9a88a9258db243a9955f7430f48e7b8 (patch)
treec30a1ef8d000ad3dd3dd31cf6da6ecc2f1e69f36
parent913a7a63d5260e32ac992ff419f35992446ead0b (diff)
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.
-rw-r--r--scene/3d/physics_body_3d.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp
index 610974ff90..092efc55d7 100644
--- a/scene/3d/physics_body_3d.cpp
+++ b/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;
}