20 个版本 (破坏性)
0.15.0 | 2024年7月4日 |
---|---|
0.14.0 | 2024年2月18日 |
0.13.0 | 2023年11月4日 |
0.12.0 | 2023年7月9日 |
0.5.0 | 2021年5月27日 |
#124 在 游戏开发
每月99 次下载
在 bones_bevy_renderer 中使用
48KB
1K SLoC
bevy_simple_tilemap
为Bevy引擎提供的清新简洁的瓦片地图实现。
为什么还需要另一个瓦片地图?
我开始这个项目的主要原因是,我觉得现有的Bevy瓦片地图实现使用起来过于复杂,当你只想尽可能简单快速地将瓦片网格渲染到屏幕上时,往往还会暴露内部的实现细节,如块等。
目标
- 允许用户将矩形瓦片网格渲染到屏幕上
- 尽可能简单直观
非目标
- 支持所有可能的瓦片形状
- 3D瓦片地图
- 辅助与渲染无关的游戏逻辑
如何使用
实例化
fn setup(
asset_server: Res<AssetServer>,
mut commands: Commands,
mut texture_atlases: ResMut<Assets<TextureAtlas>>,
) {
// Load tilesheet texture and make a texture atlas from it
let texture = asset_server.load("textures/tilesheet.png");
let atlas = TextureAtlasLayout::from_grid(vec2(16.0, 16.0), 4, 1, Some(vec2(1.0, 1.0)), None);
let texture_atlas = texture_atlases.add(atlas);
// Set up tilemap
let tilemap_bundle = TileMapBundle {
texture,
atlas: TextureAtlas {
layout: texture_atlas,
..Default::default()
},
..Default::default()
};
// Spawn tilemap
commands.spawn(tilemap_bundle);
}
更新(或插入)单个瓦片
tilemap.set_tile(ivec3(0, 0, 0), Some(Tile { sprite_index: 0, color: Color::WHITE }));
更新(或插入)多个瓦片
// List to store set tile operations
let mut tiles: Vec<(IVec3, Option<Tile>)> = Vec::new();
tiles.push((ivec3(0, 0, 0), Some(Tile { sprite_index: 0, color: Color::WHITE })));
tiles.push((ivec3(1, 0, 0), Some(Tile { sprite_index: 1, color: Color::WHITE })));
// Perform tile update
tilemap.set_tiles(tiles);
依赖项
~38–74MB
~1.5M SLoC