use bevy::{ input::keyboard::{KeyboardInput, VirtualKeyCode}, prelude::*, }; fn main() { App::build() .add_default_plugins() .init_resource::() .add_startup_system(setup.system()) .add_system(collect_input.system()) .add_system(move_on_input.system()) .run(); } #[derive(FromResources)] struct State { event_reader: EventReader, moving_right: bool, moving_left: bool, } /// adjusts move state based on keyboard input fn collect_input(mut state: ResMut, keyboard_input_events: Res>) { for event in state.event_reader.iter(&keyboard_input_events) { match event { KeyboardInput { virtual_key_code: Some(VirtualKeyCode::Left), state: element_state, .. } => { state.moving_left = element_state.is_pressed(); } KeyboardInput { virtual_key_code: Some(VirtualKeyCode::Right), state: element_state, .. } => { state.moving_right = element_state.is_pressed(); } _ => {} } } } /// moves our cube left when the "left" key is pressed. moves it right when the "right" key is pressed fn move_on_input( state: Res, time: Res