Crates.io | bevy_tween |
lib.rs | bevy_tween |
version | |
source | src |
created_at | 2024-03-04 11:22:37.335703 |
updated_at | 2024-12-09 09:24:59.044623 |
description | Flexible tweening plugin library for Bevy |
homepage | https://github.com/Multirious/bevy_tween |
repository | https://github.com/Multirious/bevy_tween |
max_upload_size | |
id | 1161616 |
Cargo.toml error: | TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
bevy_tween
Bevy procedural and keyframe animation library.
This is a young plugin and APIs are to be fleshed out. Breaking changes are to be expected!
See changelog here.
Ergonomic and user-friendly API: This crate provides functional animation framework, inspired by nom and other functional languages, which allows for declarative animation.
let sprite_id = commands.spawn(SpriteBundle { ... }).id();
let sprite = sprite_id.into_target();
commands.animation()
.insert(tween(
Duration::from_secs(1),
EaseKind::Linear,
sprite.with(translation(pos0, pos1))
));
Many functional techniques are available such as decoupling and composition.
fn my_animation(
target: TargetComponent,
duration: Duration
) -> impl FnOnce(&mut AnimationCommands, &mut Duration) {
parallel((
tween(duration, EaseKind::QuadraticOut, target.with(translation(...))),
tween(duration, EaseKind::QuadraticOut, target.with(rotation(...))),
))
}
let sprite_id = commands.spawn(Sprite { ... }).id();
let sprite = sprite_id.into_target();
commands.animation().insert(my_animation(sprite, Duration::from_secs(1)))
Flexible and Extensible: This crate is built on top of bevy_time_runner
which mean we can extend this crate by adding any components and systems.
Parallelism: Tweens are typed and can be query over by their typed system which increase chances for system parallelism.
Rich timer control:
See demos
Goals:
bevy_animation
bevy_lookup_curve
This crate chose a different approach to storing tween data/input to solve flexibility issues present in
bevy_tweening
or bevy_easings
,
like difficulty tweening in parallel or sequence of multiple types.
This approach offers:
How it works:
bevy_time_runner
, an animator is a tree of entities.TimeRunner
.
This entity handles all the timing and progress of its children.bevy_asset
bevy_render
bevy_sprite
feature.bevy_sprite
bevy_ui
bevy_lookup_curve
.bevy_lookup_curve
.bevy |
bevy_tween |
---|---|
0.15 | 0.7 |
0.14 | 0.6 |
0.13 | 0.2–0.5 |
The first crate that I've learned and improve this crate upon.
There are one common pattern in Godot to uses Node as composition interface
which inspired how bevy_time_runner
works.
nom
provides function parser combinator framework that inspried this crate's
animation framework.
Contributions are welcome!
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
cargo run --example follow -F bevy/bevy_winit
A square will follow your circle with configurable animation.
https://github.com/Multirious/bevy_tween/assets/77918086/d582c2de-0f54-4b22-be03-e3bff3348deb
cargo run --example click -F bevy/bevy_winit
Click left to spawn a circle. Hold right click to repetitively spawn a circle every frame.
https://github.com/Multirious/bevy_tween/assets/77918086/fd0fe9d3-13a2-4261-880c-cc2609b875ba
cargo run --example hold -F bevy/bevy_winit
Hold left click to increase the effect intensitiy.
https://github.com/Multirious/bevy_tween/assets/77918086/33a297a6-19f2-4146-a906-1a88ff037ab3
cargo run --example event -F bevy/bevy_winit
Showcasing the tween event feature.
https://github.com/Multirious/bevy_tween/assets/77918086/9507c467-6428-4aed-bd00-511f05e6e951
cargo run --example sprite_sheet -F bevy/bevy_winit
Sprite Sheet animation.
https://github.com/Multirious/bevy_tween/assets/77918086/e3997b06-38e6-4add-85f5-a885b69c6687