11 个版本
0.2.0 | 2024年7月17日 |
---|---|
0.1.0 | 2024年3月17日 |
0.1.0-pre.9 | 2024年2月19日 |
0.1.0-pre.5 | 2023年11月9日 |
0.1.0-pre.1 | 2023年7月31日 |
#139 in 游戏开发
175 每月下载量
78KB
1K SLoC
Bevy 游戏引擎的一个基于事件插件的插件,提供了一种简单的方法来为 2D 精灵添加销毁效果。包含基本的物理实现或与 bevy_rapier 集成的功能。
use bevy::prelude::*;
use bevy_despawn_particles::prelude::*;
#[derive(Component, Default)]
pub struct Marker;
fn main() {
App::new()
.add_plugins((DefaultPlugins, DespawnParticlesPlugin))
.add_systems(Startup, setup)
.add_systems(Update, despawn)
.run();
}
fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.spawn(Camera2dBundle::default());
commands
.spawn(SpriteBundle {
texture: asset_server.load("asteroid_round.png"),
..default()
})
.insert(Marker);
}
fn despawn(
mut despawn_particles_event_writer: EventWriter<DespawnParticlesEvent>,
entities: Query<Entity, Added<Marker>>,
) {
if let Ok(entity) = entities.get_single() {
despawn_particles_event_writer.send(
DespawnParticlesEvent::builder()
.with_fade(true) // The particles will fade as they get closer to expiration
.with_shrink(true) // The particles will shrink as they get closer to expiration
.with_linvel(150.0..300.0) // Random velocity between 150.0 and 300.0
.with_angvel([-5.0, -2.5, 2.5, 5.0]) // Random angular velocity from the given list
.with_mass(1.0) // Always 1.0
.with_lifetime(0.3..1.0) // Random lifetime between 0.3 and 1.0
.with_angular_damping(1.0) // Always 1.0, angular 'friction' that decelerates the particle
.with_linear_damping(1.0) // Always 1.0, linear 'friction' that decelerates the particle
.build(entity),
);
}
}
示例
以下所有示例均可在本仓库的示例目录中找到。
cargorun --release --examplethe_works |
---|
此示例使用了大多数可用参数。粒子逐渐消失并缩小,质量受重力影响,向外射出,并具有一定角速度和阻尼。 |
cargorun --release --examplefade |
---|
在此示例中,粒子静止不动,仅逐渐消失,产生整个精灵逐渐消失的视觉效果 |
cargorun --release --exampleshrink |
---|
在此示例中,粒子静止不动,仅在其位置缩小 |
cargorun --release --examplevelocity |
---|
在此示例中,粒子从精灵向外射出 |
cargorun --release --examplemesh |
---|
可用于 Mesh。还包括使用伪圆形网格的用法,以替换通常构成圆形网格的三角形 |
依赖项
~35–74MB
~1.5M SLoC