#scene #tiled #bevy #assets #tmx

bevy_tmx

Tiled地图编辑器创建的.tmx文件的场景加载器

2个不稳定版本

0.2.0 2021年10月25日
0.1.0 2021年6月5日

#1856 in 游戏开发

MIT许可协议

455KB
2.5K SLoC

bevy_tmx

Documentation Crates.io License

bevy_tmx是bevy游戏引擎的一个插件,允许您将来自Tiled地图编辑器的.tmx文件作为场景读取。该插件可以配置,以便您可以向场景的实体添加更多自己的组件。

目前,正在渲染的瓦片地图相对简单,它们被加载为简单的精灵实体,每个图层和精灵图集一个。

功能

  • 支持tiled的所有瓦片布局模式
    • 正交
    • 等距交错和非交错
    • 六边形交错
  • 支持自定义对象处理的对象图层
  • 支持自定义图像图层处理的图像图层
  • 透视渲染

待办事项

  • 无限地图支持
  • RightDown之外的所有渲染顺序

概述

使用bevy_tmx非常简单,只需将TmxPlugin添加到您的App中,然后加载一个场景。如果您需要向从.tmx文件加载的实体添加自定义功能,可以在加载时自定义TmxLoader

示例

use bevy::prelude::*;
use bevy::window::WindowMode;

use bevy_tmx::TmxPlugin;

struct PlayerComponent;

fn main() {
    App::build()
        .insert_resource(WindowDescriptor {
            title: "Ortho".to_string(),
            width: 1024.,
            height: 720.,
            vsync: false,
            resizable: true,
            mode: WindowMode::Windowed,
            ..Default::default()
        })
        .add_plugins(DefaultPlugins)
        .add_plugin(TmxPlugin::default()
            // Note that in tiled, the y axis points down, but in bevy it points up. The default scale is (1.0, -1.0).
            .scale(Vec2::new(3.0, -3.0))
            // This is the place to add more functionality to your objects
            .visit_objects(|object, entity| {
                if object.ty == "player" {
                    entity.insert(PlayerComponent);
                }
            })
        )
        .add_startup_system(spawn_scene.system())
        .run()
}

fn spawn_scene(mut commands: Commands, asset_server: Res<AssetServer>) {
    commands.spawn_scene(asset_server.load("ortho-map.tmx"));
    commands.spawn().insert_bundle(OrthographicCameraBundle {
        transform: Transform::from_xyz(600.0, -600.0, 50.0),
        ..OrthographicCameraBundle::new_2d()
    });
}

依赖项

~21–65MB
~436K SLoC