佐藤のメモ帳

Rust, Python, Java, AWS, etc...

Rust Bevyゲーム開発記録 その2 入力で画像を移動させる

TL;DR

f:id:xianliang2032:20210919181417g:plain

詳細

入力について

  • キーボード、マウス、タッチスクリーンなど様々な入力にBevyは対応している。
  • BevyはResourceまたはEventを介して入力デバイスから入力状態を取得する。

  • 以下はキーボード入力読み取りの例である。Inputを介してキーボードの右ボタン、左ボタンが押されていることをキーコードで判定している。

fn keyboard_input_system(keyboard_input: Res<Input<KeyCode>>, mut query: Query<(&Bar, &mut Transform)>) {

    if let Ok((bar, mut transform)) = query.single_mut(){
        if keyboard_input.pressed(KeyCode::Right) {
            ...
        }
    
        if keyboard_input.pressed(KeyCode::Left) {
            ...
        }
    }
}

画像移動について

fn keyboard_input_system(keyboard_input: Res<Input<KeyCode>>, mut query: Query<(&Bar, &mut Transform)>) {

    if let Ok((bar, mut transform)) = query.single_mut(){
        let mut direction = 0.0;
        if keyboard_input.pressed(KeyCode::Right) {
            direction += 1.0;
        }
    
        if keyboard_input.pressed(KeyCode::Left) {
            direction -= 1.0;
        }

        let translation = &mut transform.translation;
        translation.x += direction * bar.speed;
        translation.x = translation.x.min(600.0).max(-600.0);
        dbg!(translation);
    }
}

参考