11 releases (breaking)
0.9.0 | Mar 9, 2023 |
---|---|
0.7.1 | Jan 21, 2023 |
0.6.0 | Nov 14, 2022 |
0.4.1 | Jun 16, 2022 |
#181 in Game dev
98 downloads per month
9MB
996 lines
bevy_particle_systems
A native and WASM-compatible 2D particle system plugin for bevy
Example
The above was captured running a release build of the basic
example, cargo run --example basic --release
, and ran at 140-150 FPS on a
2019 Intel i9 MacBook Pro, rendering about 10k particles.
INFO bevy diagnostic: frame_time : 0.006995s (avg 0.006966s)
INFO bevy diagnostic: fps : 142.956068 (avg 143.654887)
INFO bevy diagnostic: entity_count : 10132.000000 (avg 10149.350000)
Usage
- Add the [
ParticleSystemPlugin
] plugin.
use bevy::prelude::*;
use bevy_particle_systems::ParticleSystemPlugin;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
.add_plugin(ParticleSystemPlugin::default()) // <-- Add the plugin
// ...
.add_startup_system(spawn_particle_system)
.run();
}
fn spawn_particle_system() { /* ... */ }
- Spawn a particle system whenever necessary.
use bevy::prelude::*;
use bevy_particle_systems::*;
fn spawn_particle_system(mut commands: Commands, asset_server: Res<AssetServer>) {
commands
// Add the bundle specifying the particle system itself.
.spawn(ParticleSystemBundle {
particle_system: ParticleSystem {
max_particles: 10_000,
texture: ParticleTexture::Sprite(asset_server.load("my_particle.png")),
spawn_rate_per_second: 25.0.into(),
initial_speed: JitteredValue::jittered(3.0, -1.0..1.0),
lifetime: JitteredValue::jittered(8.0, -2.0..2.0),
color: ColorOverTime::Gradient(Gradient::new(vec![
ColorPoint::new(Color::WHITE, 0.0),
ColorPoint::new(Color::rgba(0.0, 0.0, 1.0, 0.0), 1.0),
])),
looping: true,
system_duration_seconds: 10.0,
..ParticleSystem::default()
},
..ParticleSystemBundle::default()
})
// Add the playing component so it starts playing. This can be added later as well.
.insert(Playing);
}
Bevy Versions
bevy_particle_systems |
bevy |
---|---|
0.9 | 0.10 |
0.6 - 0.8 | 0.9 |
0.5 | 0.8 |
0.4 | 0.7 |
Dependencies
~22–57MB
~1M SLoC