Rust 如何在Bevy中移动任意用户输入的相机

Rust 如何在Bevy中移动任意用户输入的相机,rust,bevy,Rust,Bevy,我已经使用Camera2dBundle将精灵和背景导入到我正在设置的场景中。但是我不知道如何独立于精灵的动作来移动相机。基本上我不想让摄像机跟着播放器。我希望无论用户输入如何,它都能不断朝一个方向移动。 我试过: fn move_camera(mut camera: Query<&mut Transform, With<Camera>>) { for mut transform in camera.iter_mut() {

我已经使用Camera2dBundle将精灵和背景导入到我正在设置的场景中。但是我不知道如何独立于精灵的动作来移动相机。基本上我不想让摄像机跟着播放器。我希望无论用户输入如何,它都能不断朝一个方向移动。 我试过:

fn move_camera(mut camera: Query<&mut Transform, With<Camera>>)   {
  
     for mut transform in camera.iter_mut() {
        
            transform.translation.x += 5.0; 
     }  

以下是我接受用户输入的方式:

if keyboard_input.pressed(KeyCode::Right) {
            transform.translation.x += 2.0 * 5.0;
            transform.rotation = Quat::from_rotation_y(0.0).into();
            *atlas = player.run.clone();

有更好的方法吗?我可以添加要转换的项吗?或者我可以做什么修改?

解决了这个问题。这并不是我想要的答案,只是简单地为玩家添加一个相反方向的动作就行了

// added
transform.translation.x -= -1.0 * 5.0;
//
if keyboard_input.pressed(KeyCode::Right)
    transform.translation.x += 2.0 * 5.0;
    transform.rotation =   
    Quat::from_rotation_y(0.0).into();
        *atlas = player.run.clone();

你能提供一个简单的例子吗?我意识到创建一个MWE是很难做到的,但它将有助于回答这个问题。顺便说一句,我想你可以把相机的参考从播放器改为“世界”,这应该是允许的。
// added
transform.translation.x -= -1.0 * 5.0;
//
if keyboard_input.pressed(KeyCode::Right)
    transform.translation.x += 2.0 * 5.0;
    transform.rotation =   
    Quat::from_rotation_y(0.0).into();
        *atlas = player.run.clone();