diff options
author | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2021-08-17 07:18:22 -0700 |
---|---|---|
committer | PouleyKetchoupp <pouleyketchoup@gmail.com> | 2021-08-17 07:18:22 -0700 |
commit | 2084bb5eb9a88a9258db243a9955f7430f48e7b8 (patch) | |
tree | c30a1ef8d000ad3dd3dd31cf6da6ecc2f1e69f36 /scene/3d | |
parent | 913a7a63d5260e32ac992ff419f35992446ead0b (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.
Diffstat (limited to 'scene/3d')
-rw-r--r-- | scene/3d/physics_body_3d.cpp | 10 |
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; } |