Expand description

A particle system plugin for bevy

Currently sprite based and focused on 2D.


  1. Add the ParticleSystemPlugin plugin.
use bevy::prelude::*;
use bevy_particle_systems::ParticleSystemPlugin;

fn main() {
        .add_plugin(ParticleSystemPlugin::default()) // <-- Add the plugin
        // ...

fn spawn_particle_system() { /* ... */ }
  1. Spawn a particle system whenever necessary.

fn spawn_particle_system(mut commands: Commands, asset_server: Res<AssetServer>) {
    // Add the bundle specifying the particle system itself.
    .spawn_bundle(ParticleSystemBundle {
        particle_system: ParticleSystem {
            max_particles: 10_000,
            default_sprite: asset_server.load("my_particle.png"),
            spawn_rate_per_second: 25.0.into(),
            initial_velocity: 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,
    // Add the playing component so it starts playing. This can be added later as well.


pub use components::*;
pub use values::*;


Defines bevy Components used by the particle system.
Different value types and controls used in particle systems.


The plugin component to be added to allow particle systems to run.