feat: smooth back-forth sprite frame ticks, sprite rotation

This commit is contained in:
2023-09-08 23:38:57 -05:00
parent ffc21c8622
commit 83d665123c
4 changed files with 73 additions and 10 deletions

View File

@@ -10,16 +10,16 @@ pub struct Pacman<'a> {
}
impl Pacman<'_> {
pub fn new<'a>(starting_position: Option<(i32, i32)>, atlas: &'a Texture<'a>) -> Pacman<'a> {
pub fn new<'a>(starting_position: Option<(i32, i32)>, atlas: Texture<'a>) -> Pacman<'a> {
Pacman {
position: starting_position.unwrap_or((0i32, 0i32)),
direction: Direction::Right,
sprite: AnimatedTexture::new(atlas, 2, 24, 24),
sprite: AnimatedTexture::new(atlas, 4, 3, 32,32),
}
}
pub fn render(&mut self, canvas: &mut Canvas<Window>) {
self.sprite.render(canvas, self.position);
self.sprite.render(canvas, self.position, self.direction);
}
}
@@ -38,4 +38,21 @@ impl Entity for Pacman<'_> {
let (x, y) = self.position();
(x as u32 / 24, y as u32 / 24)
}
fn tick(&mut self) {
match self.direction {
Direction::Right => {
self.position.0 += 1;
}
Direction::Left => {
self.position.0 -= 1;
}
Direction::Up => {
self.position.1 -= 1;
}
Direction::Down => {
self.position.1 += 1;
}
}
}
}