use std::time::Duration;
use bevy::prelude::*;
use keyframe_animate::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(KeyframeAnimationPlugin)
.add_startup_system(spawn)
.run();
}
fn spawn(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.spawn_bundle(OrthographicCameraBundle::new_2d());
let player_name = Name::new("player");
let mut animation = KeyframeAnimationClip::default();
let duration = Duration::from_millis(100).as_secs_f32();
animation.add_curve_to_path(
KeyframeEntityPath {
parts: vec![player_name.clone()],
},
KeyframeVariableCurve {
keyframe_timestamps: vec![
0.0,
duration,
duration * 2.,
3. * duration,
4. * duration,
5. * duration,
],
keyframes: Keyframe::images(vec![
asset_server.load("APimg[4].png"),
asset_server.load("APimg[5].png"),
asset_server.load("APimg[6].png"),
asset_server.load("APimg[7].png"),
asset_server.load("APimg[8].png"),
asset_server.load("APimg[9].png"),
]),
options: None,
},
);
let mut player = KeyframeAnimationPlayer::new(animation);
player.repeat();
commands
.spawn_bundle(SpriteBundle {
texture: asset_server.load("APimg[4].png"),
transform: Transform::from_scale(Vec3::splat(1.0)),
..Default::default()
})
.insert_bundle((player, player_name));
}