#2d-3d #3d #bevy #sprite #gamedev #bevy-plugin #game-engine

bevy_sprite3d

Bevy 插件,允许在3D场景中使用2D精灵

13个稳定版本 (3个主要版本)

3.0.0 2024年7月6日
2.8.0 2024年2月26日
2.7.0 2023年11月5日
2.5.0 2023年7月10日
0.1.0 2022年7月29日

#100 in 游戏开发

Download history 111/week @ 2024-05-01 31/week @ 2024-05-08 38/week @ 2024-05-15 28/week @ 2024-05-22 28/week @ 2024-05-29 41/week @ 2024-06-05 34/week @ 2024-06-12 14/week @ 2024-06-19 12/week @ 2024-06-26 193/week @ 2024-07-03 56/week @ 2024-07-10 37/week @ 2024-07-17 45/week @ 2024-07-24 253/week @ 2024-07-31 45/week @ 2024-08-07 24/week @ 2024-08-14

每月372次下载
用于 3 crates

MIT 许可证

2.5MB
318 代码行

bevy_sprite3d

Crates.io MIT

在3D bevy 场景中使用2D精灵。

这是在其他引擎(Unity,Godot等)中很常见的设置。适用于

  • 使用bevy的照明 (正交相机, 3D精灵)
  • 具有更简单的视差和缩放的2D游戏 (透视相机, 3D精灵)
  • 在3D世界中运行的2D游戏 (透视相机, 3D精灵和网格)
  • 具有标牌精灵的3D游戏(例如 Delver

网格和材质都内部缓存,因此此crate可以用于像瓦片图这样的东西而不会出现问题。

示例

使用 bevy_sprite3d 的示例

chaos

更复杂的场景: examples/dungeon.rs。尝试使用 cargo run --example dungeon 运行此示例。

https://github.com/FraserLee/bevy_sprite3d/assets/30442265/1821b13c-9770-4f4e-a889-f67e06a3cda6

更多示例。这些示例不使用bevy,但演示了效果风格

the last night

the last night

hollow knight

用法

查看 示例 了解详细信息。长话短说,用以下方式初始化插件

app.add_plugin(Sprite3dPlugin)

并用以下方式生成精灵

fn setup(
    mut commands: Commands, 
    images: Res<ImageAssets>,
    mut sprite_params: Sprite3dParams
) {

    // ----------------------- Single Static Sprite ----------------------------

    commands.spawn_bundle(Sprite3d {
            image: images.sprite.clone(),

            pixels_per_metre: 400.,

            partial_alpha: true,

            unlit: true,

            ..default()

            // transform: Transform::from_xyz(0., 0., 0.),
            // pivot: Some(Vec2::new(0.5, 0.5)),
            // double_sided: true,

    }.bundle(&mut sprite_params));

    // ------------------- Texture Atlas (Sprite Sheet) ------------------------

    commands.spawn_bundle(AtlasSprite3d {
            atlas: images.sprite_sheet.clone(),

            pixels_per_metre: 32.,
            partial_alpha: true,
            unlit: true,

            index: 3,

            ..default()

            // transform: Transform::from_xyz(0., 0., 0.),
            // pivot: Some(Vec2::new(0.5, 0.5)),
            // double_sided: true,

    }.bundle(&mut sprite_params));
}

一个小复杂问题:你的图像资产应该在生成之前加载 之前,因为 bevy_sprite3d 使用图像的一些属性(例如大小和纵横比)来构建3D网格。示例展示了如何使用Bevy的 States 来完成此操作。

版本控制

bevy_sprite3d 版本 bevy 版本
3.0 0.14
2.8 0.13
2.7 0.12
2.5 - 2.6 0.11
2.4 0.10
2.1 - 2.3 0.9
1.1 - 2.0 0.8
1.0 0.7

依赖项

~38–74MB
~1.5M SLoC