如何在 Bevy 中翻转 spritesheet
How to flip a spritesheet in 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);
}
为了翻转它,我应该修改精灵的不同组件吗?
您绝对可以直接处理转换,但我认为设置 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();
}
}
我正在尝试根据玩家在屏幕上是向左还是向右移动来翻转精灵。我目前按如下方式修改 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);
}
为了翻转它,我应该修改精灵的不同组件吗?
您绝对可以直接处理转换,但我认为设置 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();
}
}