Как перевернуть таблицу спрайтов в Bevy

Я пытаюсь перевернуть спрайт в зависимости от того, движется ли игрок влево или вправо по экрану. Мой текущий подход к изменению преобразования SpriteSheetComponents следующим образом, похоже, не меняет спрайт вообще:

  fn player_direction_system(
      velocity: &Velocity,
      _: &FaceMovementDirection,
      mut transform: Mut<Transform>,
  ) {
      let flip = velocity.horizontal.signum();
      transform.value = transform.value * Mat4::from_scale(Vec3::unit_y() * flip);
  }

Есть ли другой компонент спрайта, который я должен изменить, чтобы перевернуть?

1 ответ

Решение

Вы можете работать с преобразованием напрямую, но я думаю, что было бы проще установить Rotation компонент вместо этого.

fn flip_sprite_system(direction: &FaceMovementDirection, mut rotation: Mut<Rotation>) {
    // I'm taking liberties with your FaceMovementDirection api :)
    if direction.is_left() {
        *rotation = Rotation::from_rotation_y(std::f32::consts::PI);
    } else {
        *rotation = Rotation::from_rotation_y(0.0);
    }
}
Другие вопросы по тегам