#bevy-plugin #bevy #texture #view #angle #switch #base

bevy_2dviewangle

Bevy plugin for easier to switch texture base on view angles

12 releases (5 breaking)

new 0.5.0 May 14, 2024
0.4.2 May 4, 2024
0.4.1 Apr 22, 2024
0.3.3 Apr 15, 2024
0.0.4 Jan 30, 2024

#210 in Game dev

Download history 3/week @ 2024-01-21 11/week @ 2024-01-28 119/week @ 2024-02-11 149/week @ 2024-02-18 155/week @ 2024-02-25 11/week @ 2024-03-03 4/week @ 2024-03-10 108/week @ 2024-04-07 418/week @ 2024-04-14 140/week @ 2024-04-21 141/week @ 2024-04-28 35/week @ 2024-05-05

744 downloads per month

MIT/Apache

36KB
221 lines

bevy_2dviewangle

crates.io docs.rs dependency status

Bevy plugin to easier to manage and switch texture base on view angles.

Quickstart

// Struct to store sprite sheet
#[derive(ActorsTexturesCollection, Default)]
struct MyAssets {
    #[textureview(actor = "player", action = "idle", angle = "front")]
    pub idle_front: Handle<Image>,

    // If not specify actor/action, the previous value will be used
    #[textureview(angle = "back")]
    pub idle_back: Handle<Image>,

    // If the angle "right" is not defined, it will be flipped base on the angle "left" image
    #[textureview(angle = "left")]
    pub idle_left_layout: Handle<TextureAtlasLayout>,
    
    // If angle is any, other angle which has not been defined will use this value
    #[textureview(angle = "any")]
    pub idle_any_layout: Handle<TextureAtlasLayout>,
}
// Change the sprite sheet by sending event
fn switch_sprite(
    mut actors: Query<(&mut DynamicActor, Entity)>,
    mut action_event: EventWriter<ViewChanged>,
) {
    for (mut act, e) in actors.iter_mut() {
        act.action = Action::Idle;
        act.angle = Angle::Right;
        action_event.send(ViewChanged { entity: e });
    }
}

Please see in examples for more detail.

This plugin can work with bevy_asset_loader too:

#[derive(AssetCollection, ActorsTexturesCollection, Resource)]
pub struct MyAssets {
    #[asset(path = "frog_idle_front.png")]
    #[textureview(actor = "frog", action = "idle", angle = "front")]
    pub idle_front: Handle<Image>,

    #[asset(path = "frog_idle_back.png")]
    #[textureview(angle = "back")]
    pub idle_back: Handle<Image>,

    #[asset(path = "frog_idle_left.png")]
    #[textureview(angle = "left")]
    pub idle_left: Handle<Image>,

    #[asset(texture_atlas_layout(tile_size_x = 16., tile_size_y = 16., columns = 1, rows = 3))]
    #[textureview(angle = "any")]
    pub any_layout: Handle<TextureAtlasLayout>,
}

License

Please see LICENSE.

Compatible Bevy Versions

bevy bevy_2dviewangle
0.13 0.2-0.5, branch master
0.12 0.1

Dependencies

~41–80MB
~1M SLoC