如何在Bevy中翻转Spritesheet

问题描述

我正在尝试根据播放器在屏幕上向左还是向右移动来翻转精灵。我目前按如下方式修改SpriteSheetComponents的变换的方法似乎根本没有改变该sprite:

  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);
  }

为了翻转它,我应该修改精灵的其他部分吗?

解决方法

您绝对可以直接进行转换,但是我认为设置Rotation组件会更容易。

fn flip_sprite_system(direction: &FaceMovementDirection,mut transform: Mut<Transform>) {
    // I'm taking liberties with your FaceMovementDirection api :)
    if direction.is_left() {
        transform.rotation = Quat::from_rotation_y(std::f32::consts::PI);
    } else {
        transform.rotation = Quat::default();
    }
}