#pixel-art #2d-graphics #bevy #graphics #pixel #2d

bevy_pixel_camera

为Bevy设计的简单像素完美相机插件,适用于像素艺术

14个不稳定版本 (6个破坏性更新)

0.13.0 2024年2月19日
0.12.1 2023年11月17日
0.5.1 2023年9月8日
0.5.0 2023年7月10日
0.1.1 2021年7月2日

#121 in 游戏开发

Download history 84/week @ 2024-03-11 39/week @ 2024-03-18 7/week @ 2024-03-25 120/week @ 2024-04-01 25/week @ 2024-04-08 20/week @ 2024-04-15 39/week @ 2024-04-22 16/week @ 2024-04-29 10/week @ 2024-05-06 14/week @ 2024-05-13 42/week @ 2024-05-20 21/week @ 2024-05-27 50/week @ 2024-06-03 56/week @ 2024-06-10 40/week @ 2024-06-17 35/week @ 2024-06-24

每月下载量184

MIT/Apache

36KB
519

bevy_pixel_camera

Bevy游戏引擎的简单相机插件,有助于使用像素艺术精灵。

此包提供了一个插件,用于自动配置Bevy的Camera2dBundle。它通过设置相机为整数缩放因子(使用Bevy的ScalingMode::WindowSize)来工作,并自动更新缩放级别,以便指定的目标分辨率尽可能多地填充屏幕。

该插件还可以自动设置和调整相机的视口大小以匹配目标分辨率。

与其他方法的比较

渲染像素艺术游戏有两种主要方法:独立放大每个精灵,或将所有内容渲染到离屏纹理中并仅放大此纹理。此包使用第一种方法。两种方法都有优点和缺点。

"独立放大每个精灵"方法的优点(即此包)

  • 如果愿意暂时打破虚拟像素的对齐,则允许精灵有更平滑的滚动和移动;
  • 更容易混合像素艺术和高清图形(例如文本、粒子或效果)。

"离屏纹理"方法的优点

  • 始终确保虚拟像素上完美对齐(正宗的“复古”外观);
  • 可能更有效(在大多数情况下,这种差异可能微不足道,尤其是在现代计算机上)。

如何使用

请注意,Bevy默认使用线性采样进行纹理,这不适合像素艺术。最简单的方法是使用ImagePlugin::default_nearest()配置Bevy的默认插件来更改此设置。

另外,请注意,如果精灵的宽度或高度不是2的倍数,您可能需要更改精灵的锚点(默认为居中),否则它将不会与虚拟像素对齐。

use bevy::prelude::*;
use bevy::sprite::Anchor;
use bevy_pixel_camera::{
    PixelCameraPlugin, PixelZoom, PixelViewport
};

fn main() {
    App::new()
        .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest()))
        .add_plugins(PixelCameraPlugin)
        .add_systems(Startup, setup)
        .run();
}

fn setup(
    mut commands: Commands,
    asset_server: Res<AssetServer>,
) {
    commands.spawn((
        Camera2dBundle::default(),
        PixelZoom::FitSize {
            width: 320,
            height: 180,
        },
        PixelViewport,
    ));

    commands.spawn(SpriteBundle {
        texture: asset_server.load("my-pixel-art-sprite.png"),
        sprite: Sprite {
            anchor: Anchor::BottomLeft,
            ..Default::default()
        },
        ..Default::default()
    });
}

包中包含一个简单的示例。运行方法如下:

cargo run --example flappin

支持的Bevy版本

bevy bevy_pixel_camera
0.13 0.13
0.12 0.12
0.11 0.5.2
0.10 0.4.1
0.9 0.3
0.8 0.2

迁移指南:0.4到0.5(Bevy 0.10到0.11)

已弃用 PixelBorderPlugin。如果要在虚拟分辨率周围添加边框,在创建相机包时将 true 传递给 set_viewport 参数(见上面的示例)。

迁移指南:从 0.5 迁移到 0.12(从 Bevy 0.11 迁移到 0.12)

已弃用 PixelCameraBundle。用标准的 Camera2dBundle 替换它,并向其中添加 PixelZoomPixelViewport 组件。

许可证

根据您的选择,许可方式为以下之一

任选其一。

许可证:MIT OR Apache-2.0

依赖关系

~43–80MB
~1M SLoC