From 0deaffcd322ce3412dab51ac7f58fb13e6e33d8e Mon Sep 17 00:00:00 2001 From: Daniel Flanagan Date: Fri, 22 Dec 2023 21:58:59 -0600 Subject: [PATCH] Player animation --- src/player.rs | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/player.rs b/src/player.rs index 619072a..eaf23f8 100644 --- a/src/player.rs +++ b/src/player.rs @@ -34,24 +34,35 @@ fn spawn_player(mut commands: Commands, assets: Res) { )); } -fn player_movement(mut query: Query<&mut Heading, With>, input: Res>) { - let mut heading = query.single_mut(); +fn player_movement( + mut query: Query<(&mut TextureAtlasSprite, &mut Heading), With>, + input: Res>, +) { + let (mut sprite, mut heading) = query.single_mut(); **heading = Vec2::ZERO; for key in input.get_pressed() { match key { - KeyCode::W | KeyCode::Up => { - **heading += Vec2::Y; - } - KeyCode::S | KeyCode::Down => { - **heading -= Vec2::Y; - } KeyCode::A | KeyCode::Left => { **heading -= Vec2::X; } KeyCode::D | KeyCode::Right => { **heading += Vec2::X; } + KeyCode::W | KeyCode::Up => { + **heading += Vec2::Y; + } + KeyCode::S | KeyCode::Down => { + **heading -= Vec2::Y; + } _ => {} } } + if heading.y < 0. { + sprite.index = 0; + } else if heading.y > 0. { + sprite.index = 1; + } else if heading.x != 0. { + sprite.index = 2; + sprite.flip_x = heading.x > 0.; + } }