Rust Bevyゲーム開発記録 その2 入力で画像を移動させる
TL;DR
- 本家サンプル
- 入力の例 github.com
- 画像移動の例 github.com
詳細
入力について
- キーボード、マウス、タッチスクリーンなど様々な入力にBevyは対応している。
以下はキーボード入力読み取りの例である。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) { ... } } }
画像移動について
- 表示する画像情報はSpriteBundleに登録されている。
- SpriteBundleはTransformという座標やローテーション、スケールを組み合わせた情報を持つ。
- これらを変更することで画像などを移動させることができる。
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); } }