#tiled #bevy #maps #tile #rendering #editor #object

bevy_tiled_prototype

用于渲染瓦片地图的插件

5个版本

0.2.5 2021年5月1日
0.2.4 2021年4月27日
0.2.3 2021年4月7日
0.2.2 2021年4月6日
0.1.0 2020年11月22日

游戏开发类别中排名第1020

每月下载量约40次

自定义许可协议

57KB
1K SLoC

bevy_tiled

欢迎使用bevy_tiled!

这是一个用于渲染瓦片地图的插件。具体来说,是来自"Tiled"编辑器的地图,可以在以下网址找到

https://www.mapeditor.org/

您可以自由地将此代码作为您自定义瓦片映射解决方案的参考。

Bevy版本

本仓库的main分支针对Bevy 0.5。当使用bevy_tiled时,请确保您的Bevy版本与该库引用的版本相匹配。也有0.4和0.3版本的版本。

如果您正在使用framp的Bevy 0.4分支,它目前已被合并并由v0.1.0-bevy-0.4版本发布。为了获得一些额外的错误修复,您可以指向v0.1.1-bevy-0.4标签。Bevy 0.4中的对象支持是可用的,并且是一个开放的PR,针对bevy-0.4分支,并作为v0.2.1-rc1-bevy-0.4标签发布。

对于依赖于旧版bevy_tiled的用户,您需要将Cargo.toml指向bevy-0.3分支或v0.1.0-bevy-0.3标签。那里有一些针对地图定位的小修复,其他方面没有变化。

基本设置

遵循Rust 入门指南,并确保您的机器上已安装rustc编译器和cargo构建系统。

克隆此仓库并尝试运行一些示例

# Runs the orthographic tile map example
cargo run --example ortho_main
# Runs the isometric tile map example
cargo run --example iso_main

在这些示例中,您应该能够使用wasd键在地图上平移。您可以在自己的Bevy项目中遵循类似的模式。有关更多信息,请参阅[Bevy设置]指南。

特性

顶级实体支持

目前,TiledMapBundle只是一个配置对象。如果您想访问一个可以变换的顶级实体,请将其传递到配置中

parent_option: Some(entity)

然后,块和对象都将作为此实体的子项插入,该实体将带有MapRoot标签。此API可能发生变化,但我们有一个示例说明它当前的工作方式。

对象组支持

现在支持对象组。如果它们不可见,则会被跳过。不可见的单个对象将以is_visible设置为false的方式生成。您可以将以下内容传递到配置对象中

debug_config: DebugConfig { enabled: true, material: None }

以显示没有瓦片精灵的对象的颜色网格。material: None将使用默认材质。目前只支持矩形。一些其他对象将显示为小方块,直到我们改进支持。

要查看对象和调试功能,请运行ortho_debug示例,这将启用对象的调试视图。使用空格键切换对象。

# Runs the debug/objects example
cargo run --example ortho_debug

事件

在生成地图时,您可以监听两个事件。

  • ObjectReadyEvent在对象生成时触发。
  • MapReadyEvent在所有对象和图层都生成后触发。

这两个事件都有:pub map_entity_option: Option, pub map_handle: Handle,

ObjectReadyEvent还包括entity: Entity,以显示对象是如何生成的。

热重载

提供有限的热重载支持。根据资产句柄删除旧实体(目前如此)。

asset_server.watch_for_changes().expect("watch for changes failed");

然后,当您保存地图时,它应该在应用程序中更新。

WASM和bevy_webgl2

在项目的Cargo.toml中使用default-features=false, features=["web"]。使用Zstd压缩的Tiled地图不受支持。

所需的最重要特性

  • 对等距地图的更好支持
  • 支持在瓦片中嵌入对象
  • 支持在Tmx文件中嵌入图像
  • 支持动画

依赖项

~35–81MB
~753K SLoC