#camera #bevy #bevy-plugin #gamedev #2d-game

bevy_trauma_shake

用于2D摄像机摇晃的插件

3个版本 (破坏性更新)

0.3.0 2024年7月13日
0.2.0 2024年2月23日
0.1.0 2023年11月18日

#1413 in 游戏开发

Download history 14/week @ 2024-05-20 3/week @ 2024-06-03 1/week @ 2024-07-01 99/week @ 2024-07-08 13/week @ 2024-07-15 16/week @ 2024-07-22 87/week @ 2024-07-29

每月216次下载

MIT/Apache

36KB
172

bevy_trauma_shake

crates.io MIT/Apache 2.0 crates.io docs.rs

使用三行代码为您的2D Bevy游戏添加摄像机摇晃。

目标

  • 无需配置
  • 合理的默认值
  • 内置电池(默认噪声)
  • 与bevy_pancam兼容

使用方法

添加插件

app.add_plugins(TraumaPlugin);

只需将组件添加到您的摄像机中

commands.spawn((Camera2dBundle::default(), Shake::default()));

使其摇晃

fn shake(mut shake: Query<&mut Shake>, keys: Res<ButtonInput<KeyCode>>) {
    if keys.just_pressed(KeyCode::Space) {
        shake.single_mut().add_trauma(0.2);
    }
}

还有一个方便的系统参数,用于将创伤应用于所有 Shake

fn shake(mut shake: Shakes, keys: Res<ButtonInput<KeyCode>>) {
    if keys.just_pressed(KeyCode::Space) {
        shakes.add_trauma(0.2);
    }
}

如果您喜欢事件,还有一个事件

fn shake(mut trauma: EventWriter<TraumaEvent>, keys: Res<ButtonInput<KeyCode>>) {
    if keys.just_pressed(KeyCode::Space) {
        trauma.send(0.2.into());
    }
}

还有一个命令

fn shake(mut commands: Commands, keys: Res<ButtonInput<KeyCode>>) {
    if keys.just_pressed(KeyCode::Space) {
        info!("Adding small trauma");
        commands.add_trauma(0.2);
    }
}

也许我有点过于夸张,我应该去掉其中的一种方式,无论如何,它们可以通过功能切换:system_parameventscommands

可选配置

可选地添加 ShakeSettings,如果您对默认值不满意。

    commands.spawn((
        Name::new("Camera"),
        Camera2dBundle::default(),
        Shake::default(),
        ShakeSettings {
            amplitude: 200.,
            trauma_power: 3.,
            decay_per_second: 0.3,
            frequency: 4.,
            octaves: 2,
        },
        PanCam::default(),
    ));

Bevy版本支持

main分支针对最新的Bevy版本。

bevy bevy_trauma_shake
0.14 0.3, main
0.13 0.2
0.12 0.1

许可

bevy_trauma_shake可以选择以下任一许可

任您选择。

感谢

贡献

欢迎PR!

依赖项

~34–70MB
~1M SLoC