#tilemap #bevy #tile #grid #render #screen #chunks

bevy_simple_tilemap

为Bevy引擎提供的清新简洁的瓦片地图实现

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游戏开发

Download history 21/week @ 2024-04-29 17/week @ 2024-05-06 22/week @ 2024-05-13 25/week @ 2024-05-20 21/week @ 2024-05-27 41/week @ 2024-06-03 28/week @ 2024-06-10 25/week @ 2024-06-17 26/week @ 2024-06-24 340/week @ 2024-07-01 33/week @ 2024-07-08 23/week @ 2024-07-15 19/week @ 2024-07-22 29/week @ 2024-07-29 27/week @ 2024-08-05 21/week @ 2024-08-12

每月99 次下载
bones_bevy_renderer 中使用

MIT/Apache

48KB
1K SLoC

bevy_simple_tilemap

CI GitHub release (latest by date) Crates.io

为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