diff --git a/src/plugins/prepare.rs b/src/plugins/prepare.rs index 8a705635..f65656a0 100644 --- a/src/plugins/prepare.rs +++ b/src/plugins/prepare.rs @@ -81,7 +81,7 @@ fn init_rigid_bodies( if let Some(ref mut transform) = transform { #[cfg(feature = "2d")] { - transform.translation = pos.extend(0.0).as_f32(); + transform.translation = pos.extend(transform.translation.z).as_f32(); } #[cfg(feature = "3d")] { diff --git a/src/plugins/sync.rs b/src/plugins/sync.rs index ac8aed83..9cd2476a 100644 --- a/src/plugins/sync.rs +++ b/src/plugins/sync.rs @@ -38,8 +38,9 @@ fn sync_transforms( if let Ok((parent_transform, parent_pos, parent_rot)) = parents.get(**parent) { // Compute the global transform of the parent using its Position and Rotation let parent_transform = parent_transform.compute_transform(); - let parent_pos = - parent_pos.map_or(parent_transform.translation, |pos| pos.extend(0.0).as_f32()); + let parent_pos = parent_pos.map_or(parent_transform.translation, |pos| { + pos.extend(parent_transform.translation.z).as_f32() + }); let parent_rot = parent_rot.map_or(parent_transform.rotation, |rot| { Quaternion::from(*rot).as_f32() }); @@ -51,7 +52,7 @@ fn sync_transforms( // The new local transform of the child body, // computed from the its global transform and its parents global transform let new_transform = GlobalTransform::from( - Transform::from_translation(pos.extend(0.0).as_f32()) + Transform::from_translation(pos.extend(transform.translation.z).as_f32()) .with_rotation(Quaternion::from(*rot).as_f32()), ) .reparented_to(&GlobalTransform::from(parent_transform)); @@ -60,7 +61,7 @@ fn sync_transforms( transform.rotation = new_transform.rotation; } } else { - transform.translation = pos.extend(0.0).as_f32(); + transform.translation = pos.extend(transform.translation.z).as_f32(); transform.rotation = Quaternion::from(*rot).as_f32(); } }