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 游戏开发
每月下载量184
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
替换它,并向其中添加 PixelZoom
和 PixelViewport
组件。
许可证
根据您的选择,许可方式为以下之一
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 https://open-source.org.cn/licenses/MIT)
任选其一。
许可证:MIT OR Apache-2.0
依赖关系
~43–80MB
~1M SLoC