使用 get_single() 时如何修改 Bevy 中的组件?

Jov*_*ove 3 rust bevy

我正在与 Bevy 一起制作一个简单的自上而下的“弹幕地狱”游戏。我尝试创建一个系统来照顾玩家的冲刺,如下所示:

fn player_dashing_system(
    kb: Res<Input<KeyCode>>,
    query: Query<&mut Player>
) {
    if let Ok(&mut player) = query.get_single() {
        if kb.just_pressed(KeyCode::Space) {
            player.speed = BASE_PLAYER_DASH_SPEED;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

fn player_dashing_system(
    kb: Res<Input<KeyCode>>,
    query: Query<&mut Player>
) {
    if let Ok(&mut player) = query.get_single() {
        if kb.just_pressed(KeyCode::Space) {
            player.speed = BASE_PLAYER_DASH_SPEED;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过摆弄变量的可变性,但没有任何效果。

Col*_*Two 5

使用get_single_mut

还要删除&mutfrom Ok(&mut player),否则模式将取消引用播放器,这可能不是您想要的。