summaryrefslogtreecommitdiffstats
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)
downloadredot-engine-2084bb5eb9a88a9258db243a9955f7430f48e7b8.tar.gz
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;
}