12个版本 (7个破坏性版本)
0.8.1 | 2024年7月30日 |
---|---|
0.7.2 | 2024年4月3日 |
0.7.1 | 2024年3月31日 |
0.6.0 | 2023年12月29日 |
0.2.0 | 2022年12月26日 |
#159 in 游戏开发
每月下载量 285次
在 bevy_ldtk_asset 中使用
40KB
423 行
Bevy的Aseprite插件
AsepriteBundle
由与 SpriteSheetBundle
相同的字段组成,但额外包含两个组件,Handle<Aseprite>
和 AsepriteAnimation
。
示例
请参阅 examples/aseprite.rs 以获取完整示例,您可以使用以下命令运行它
cargo run --example aseprite
用法
基本用法如下
fn load_assets(asset_server: Res<AssetServer>, mut aseprite_handles: ResMut<AsepriteHandles>) {
let player: Handle<Aseprite> = asset_server.load("player.ase");
aseprite_handles.push(player);
}
fn setup(
mut commands: Commands,
aseprite_handles: Res<AsepriteHandles>,
aseprites: Res<Assets<Aseprite>>,
) {
let aseprite_handle = &aseprite_handles[0];
let aseprite = aseprites.get(aseprite_handle).unwrap();
let animation = AsepriteAnimation::new(aseprite.info(), "idle");
commands
.spawn(Player)
.insert(AsepriteBundle {
texture: aseprite.texture().clone_weak(),
atlas: TextureAtlas {
index: animation.current_frame(),
layout: aseprite.layout().clone_weak(),
},
aseprite: aseprite_handle.clone_weak(),
animation,
..default()
});
}
#[derive(Resource, Deref, DerefMut, Default)]
struct AsepriteHandles(Vec<Handle<Aseprite>>);
组件 AsepriteAnimation
还公开了获取有关当前动画帧(在标签内或外)、其持续时间或剩余帧数的等信息的方法。这可以在动画结束时切换状态非常有用
fn transition_player(
time: Res<Time>,
player_q: Query<(&PlayerState, &Handle<Aseprite>, &AsepriteAnimation), With<Player>>,
aseprites: Res<Assets<Aseprite>>,
mut ev_player_changed: EventWriter<PlayerChanged>,
) {
let (&player_state, handle, anim) = player_q.single();
let aseprite = aseprites.get(handle).unwrap();
match player_state {
PlayerState::Attack => {
let remaining_frames = anim.remaining_tag_frames(aseprite.info()).unwrap();
let frame_finished = anim.frame_finished(time.delta());
if remaining_frames == 0 && frame_finished {
ev_player_changed.send(PlayerState::Stand.into());
}
}
_ => (),
}
}
Bevy兼容性
bevy | bevy_mod_aseprite |
---|---|
0.14 | 0.8 |
0.13 | 0.7 |
0.12 | 0.6 |
0.11 | 0.5 |
0.10 | 0.4 |
0.9 | 0.2, 0.3 |
0.8 | 0.1 |
历史
此crate最初是 mdenchev/bevy_aseprite 的分支。
依赖关系
~36–73MB
~1.5M SLoC