Giter VIP home page Giter VIP logo

benimator's Introduction

Benimator

License Crates.io Docs Bevy tracking dependency status Build

A sprite sheet animation plugin for bevy

Features

  • A SpriteSheetAnimation asset
  • Automatic update indices of a TextureAtlasSprite
  • Animation modes: Repeat or Once
  • An animation is playing if, and only if, a Play component is present in the entity
    • Simply remove/insert the Play component to pause/resume an animation
  • The animation can be defined from an index-range, or an arbitrary list of indices
  • Each frame may have a different duration

Usage

fn main() {
  App::build()
          .add_plugins(DefaultPlugins)
          .add_plugin(AnimationPlugin) // <-- Add the plugin
          .add_startup_system(spawn.system())
          .run();
}

fn spawn(
  mut commands: Commands,
  asset_server: Res<AssetServer>,
  mut textures: ResMut<Assets<TextureAtlas>>,
  mut animations: ResMut<Assets<SpriteSheetAnimation>>,
) {
  // Don't forget the camera ;-)
  commands.spawn_bundle(OrthographicCameraBundle::new_2d());

  // Create an animation
  // Here we use an index-range (from 0 to 4) where each frame has the same duration
  let animation_handle = animations.add(SpriteSheetAnimation::from_range(
    0..=4,
    Duration::from_millis(100),
  ));

  commands
          // Spawn a bevy sprite-sheet
          .spawn_bundle(SpriteSheetBundle {
            texture_atlas: textures.add(TextureAtlas::from_grid(asset_server.load("coin.png"), Vec2::new(16.0, 16.0), 5, 1)),
            transform: Transform::from_scale(Vec3::splat(10.0)),
            ..Default::default()
          })
          // Insert the asset handle of the animation
          .insert(animation_handle)
          // Start the animation immediately. Remove this component in order to pause the animation.
          .insert(Play);
}

Here is the result:

Example result

(Asset by La Red Games - CC0)

For more details see the documentation

Installation

Add to Cargo.toml:

benimator = "0.3.1"

Cargo features

  • warnings (enabled by default). Log warnings in case of incorrect usage detected.

Bevy Version Compatibility

bevy benimator
0.5 >= 0.1

Contribute / Contact

Issues, pull requests are welcome.

It is possible to directly discuss with me (Jomag#2675) via the bevy discord

License

Licensed under either of

at your option.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.