#bevy #gamedev #game

bevy_particle_systems

Bevy的粒子系统插件

17个版本 (重大更改)

0.13.0 2024年7月18日
0.12.0 2024年2月19日
0.11.2 2023年12月16日
0.11.1 2023年11月20日
0.4.1 2022年6月16日

66游戏开发

Download history 13/week @ 2024-05-02 7/week @ 2024-05-09 21/week @ 2024-05-16 16/week @ 2024-05-23 32/week @ 2024-05-30 71/week @ 2024-06-06 19/week @ 2024-06-13 19/week @ 2024-06-20 14/week @ 2024-06-27 49/week @ 2024-07-04 10/week @ 2024-07-11 190/week @ 2024-07-18 242/week @ 2024-07-25 103/week @ 2024-08-01 51/week @ 2024-08-08 130/week @ 2024-08-15

537 每月下载量
bevy_cleancut 中使用

MIT 许可证

8MB
1.5K SLoC

bevy_particle_systems

Crates.io docs MIT

Bevy的本地和WASM兼容的2D粒子系统插件

注意:此crate仍在开发中,其API可能在版本之间发生变化。

示例

上面的截图是在运行basic示例的发布版本时捕获的,使用cargo run --example basic --release,在2019年Intel i9 MacBook Pro上以190-200 FPS运行,渲染约10k个粒子。

INFO bevy diagnostic: frame_time                      :    5.125810ms (avg 5.211673ms)
INFO bevy diagnostic: fps                             :  206.027150   (avg 204.176718)
INFO bevy diagnostic: entity_count                    : 11358.713999   (avg 11341.450000)

使用方法

  1. 添加ParticleSystemPlugin插件。
use bevy::prelude::*;
use bevy_particle_systems::ParticleSystemPlugin;

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, ParticleSystemPlugin)) // <-- Add the plugin
        // ...
        .add_systems(Startup, spawn_particle_system)
        .run();
}

fn spawn_particle_system() { /* ... */ }
  1. 在必要时随时生成粒子系统。
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::srgba(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版本

bevy_particle_systems bevy
0.13 0.14
0.12 0.13
0.11 0.12
0.10 0.11
0.9 0.10
0.6 - 0.8 0.9
0.5 0.8
0.4 0.7

依赖关系

~30–67MB
~1M SLoC