Как перевернуть таблицу спрайтов в 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);
}
}