Rust 如何在Bevy中翻转精灵表

Rust 如何在Bevy中翻转精灵表,rust,bevy,Rust,Bevy,我试图根据玩家在屏幕上是向左还是向右移动来翻转精灵。我目前按如下方式修改SpriteSheetComponents变换的方法似乎根本不会更改sprite: fn player_direction_system( velocity: &Velocity, _: &FaceMovementDirection, mut transform: Mut<Transform>, ) { let flip = velocity

我试图根据玩家在屏幕上是向左还是向右移动来翻转精灵。我目前按如下方式修改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);
  }
fn播放器方向系统(
速度:&速度,
_:&FaceMovementDirection,
mut变换:mut,
) {
让flip=velocity.horizontal.signum();
transform.value=transform.value*Mat4::from_scale(Vec3::unit_y()*flip);
}

我是否应该修改精灵的另一个组件来翻转它?

您完全可以直接处理变换,但我认为设置
旋转组件会更容易

fn翻转精灵系统(方向:&FaceMovementDirection,mut变换:mut){
//我对你的FaceMovementDirection api不加限制:)
如果方向为左(){
transform.rotation=Quat::from_rotation_y(std::f32::consts::PI);
}否则{
transform.rotation=Quat::default();
}
}

您还应确保使用的是最新版本的Bevy。我们最近才添加了对此的支持(使用
bevy::math::Quat
)。使用bevy v0.3,即
transform.rotation=Quat::from_rotation_y(std::f32::consts::PI)