I'm trying to write a system that updates the camera position to that of a target entity's x and y values.
fn update_camera(
camera_query: Query<(&mut Transform, &CameraTarget)>,
targets_query: Query<&Transform>,
) {
let (camera_transform, camera_target) = camera_query.single();
if let Some(target) = camera_target.target {
if let Ok(target_transform) = targets_query.get_component::<Transform>(target) {
// Option 1:
*camera_transform = Transform {
translation: Vec3 {
x: target_transform.translation.x,
y: target_transform.translation.y,
..target_transform.translation
},
..*target_transform
};
// Option 2:
camera_transform.translation.x = target_transform.translation.x;
camera_transform.translation.y = target_transform.translation.y;
}
}
}```
Is this typically how you would do it with bevy's API?
I came up with two ways (option 1 and 2) of copy the x and y values but they both seem quite annoying to write. In other languages It could have been handled by a getter and setter like so:
``camera_transform.translation.xy = target_transform.translation.xy``
Is anything like that possible in rust?