Bevy Sprite Animations

Easily manage complex 2D sprite animations

Quick Start

```rust fn main() { App::new() .addplugins(microbanimate::BanimatePluginGroup) // Other plugins .addstartupsystem(spawn_animated) .run(); }

pub fn spawnanimated(mut commands: Commands, assets: Res) { commands .spawnbundle(SpriteSheetBundle { textureatlas: assets.load("myspritesheet.atlas"), sprite: TextureAtlasSprite::new(0), ..Default::default() }) .insertbundle(SpriteAnimationBundle::new( String::from("idle"), server.load("my_animatoins.anim.json") )); } ```

Types of Animation

Simple Animations

TODO: Describe simple animations

Sprite Animations

TODO: Describe sprite animations

Directional Animations

TODO: Describe directional animations

Child Animations

Adding a ChildAnimationBundle to an entity will cause its status to by synced to it's Parent entity

Animation Sets

An animation set maps a name to a series of frames and a frame rate. A given animation has one frame rate for the whole animation, but different animations can have different frame rates (i.e. a "walk" animation could play at 100ms per frame, and an "idle" animation could play at 250ms per frame, but you can not set the duration of an individual frame within either animation).

An AnimationSet might contains many animations, and a given AnimationSet is likely to be attached to many entities. As such, animations use the Asset system to avoid passing around relatively large duplicate objects. Loaders are included for JSON and TOML data types, but only JSON is enabled by default. The loaders are not required, and so can therefore be disabled if another method of creating AnimationSet assets is desired.

Defining animations with JSON

With the json_loader feature enabled, you can load an animation set from a file with a .anim.json suffix that looks like this:

json { "idle": { "frames": [ 1, 2, 3 ], "frame_time": 250 }, "shoot_right": { "frames": [ 34, 34, 34, 35, 36 ], "frame_time": 100 } }

Defining animations with TOML

With the toml_loader feature enabled, you can load an animation set from a file with a .anim.toml suffix that looks like this:

```toml [idle] frames = [1, 2, 3] frame_time = 250

[shootright] frames = [34, 34, 34, 35, 36] frametime = 100 ```

Compatibility

| banimate version | bevy version | tilemap version | |---------------------|--------------|------------------------------------------| | 0.6.0-rc.1 | 0.11 | 55c15bfa43c7a9e2adef6b70007e92d699377454 | | 0.5.x | 0.10 | 0.10 | | 0.5.x | 0.10 | 0.10 | | 0.2.x, 0.3.x, 0.4.x | 0.9 | 0.9 | | 0.1.x | 0.8 | 0.8 |