12个重大版本更新
0.14.0 | 2024年7月18日 |
---|---|
0.12.0 | 2024年2月11日 |
0.11.1 | 2023年10月15日 |
0.11.0 | 2023年7月23日 |
0.4.0 | 2021年5月27日 |
#16 in 游戏开发
2,998 每月下载量
用于 5 crates
265KB
6K SLoC
bevy_ecs_tilemap
bevy的瓦片地图渲染插件。由于其将瓦片作为实体处理,因此更符合ECS的设计。
特性
- 每个实体一个瓦片。
- 使用分块方法进行快速渲染。
- 图层和稀疏瓦片地图。
- GPU加速动画。
- 等距和六边形瓦片地图。
- 与Tiled和LDTK编辑器集成的示例。
截图
它是如何工作的?
很简单,每个实体都有一个瓦片。在幕后,瓦片被分割成块,每个块都有自己的网格,以最佳方式发送到GPU。
为什么使用这个而不是X?
因为每个瓦片都是独立的实体,编辑瓦片变得非常简单方便。这允许您为实体添加标签以进行更新,使动画等操作更容易。想要有一个采矿模拟,其中对瓦片施加伤害?使用此插件很容易。
struct Damage {
amount: u32,
}
fn update_damage(
mut query: Query<(&mut TileTexture, &Damage), Changed<Damage>>,
) {
for (mut tile_texture, damage) in query.iter_mut() {
tile_texture.0 = TILE_DAMAGE_OFFSET + damage.amount;
}
}
示例
accessing_tiles
– 示例展示了如何通过使用瓦片地图坐标从地图对象访问瓦片。animation
– 基本的CPU动画示例。basic
- 创建瓦片地图的最简单示例。bench
- 地图渲染系统的压力测试。加载需要一些时间。chunking
- 一个简单的示例,展示了如何通过生成多个块来实现无限瓦片地图。colors
- 展示了每个瓦片可以具有独立颜色。frustum_cull_test
- 一个用于测试视锥剔除的环境。game_of_life
- 生命游戏模拟器。hexagon_column
- 使用“尖角”六边形进行网格化的地图。hexagon_generation
- 展示如何生成六边形地图。hexagon_row
- 使用平面六边形进行网格化的地图。iso_diamond
- 使用菱形排序进行等距网格化的地图。iso_staggered
- 使用交错排序进行等距网格化的地图。layers
- 展示如何使用多个地图实体/组件来创建“层”。ldtk
- 加载和渲染LDTK地图的示例。我们建议查看bevy_ecs_ldtk
(https://crates.io/crates/bevy_ecs_ldtk)。mouse_to_tile
- 展示如何将鼠标光标位置转换为瓦片位置。move_tile
- 展示如何移动瓦片而不销毁和重生它。random_map
- 每100毫秒编辑所有瓦片的基准。remove_tiles
- 展示如何使用map_query通过示例移除瓦片。spacing
- 展示如何加载包含瓦片之间间距的瓦片地图纹理。tiled
- 加载和渲染Tiled编辑器地图的示例。tiled_rotated
- 加载和渲染带有翻转和旋转的Tiled编辑器地图的示例。visibility
- 展示瓦片和块可见性的示例。
运行示例
cargo run --release --example basic
在网页上运行示例
这可以通过wasm-server-runner变得简单。
安装和配置完成后,运行
WebGL2
cargo run --target wasm32-unknown-unknown --example animation --release --features atlas,bevy/webgl2
注意:当针对WebGL2进行Web开发时,必须使用atlas
功能。请参阅#283。
WebGPU
WebGPU目前还没有被许多浏览器很好地支持。
RUSTFLAGS=--cfg=web_sys_unstable_apis cargo run --example animation --target=wasm32-unknown-unknown
Bevy兼容性
bevy | bevy_ecs_tilemap |
---|---|
main |
bevy-track |
0.12 | 0.12 |
0.11 | 0.11.* |
0.10 | 0.10 |
0.9 | 0.9 |
0.8 | 0.8 |
0.8 | 0.7 |
0.7 | 0.6 |
0.6 | 0.5 |
资产来源
- 绿色领域,由GuttyKreum提供。
依赖关系
~37–73MB
~1.5M SLoC