bevy_ecs_ldtk

crates.io docs.rs crates.io MIT/Apache 2.0 Bevy tracking CI

An ECS-friendly LDtk plugin for bevy. Uses bevyecstilemap as a base.

platformer-example

cargo run --example platformer --release

Features

Getting Started

The goal of this plugin is to make it as easy as possible to use LDtk with bevy for common use cases, while providing solutions to handle more difficult cases. You only need a few things to get started: 1. Add the LdtkPlugin to the App 2. Insert the LevelSelection resource into the App to pick your level 3. Spawn an LdtkWorldBundle 4. Optionally, use #[derive(LdtkEntity)] and #[derive(LdtkIntCell)] on bundles and register them to the App to automatically spawn those bundles on Entity and IntGrid layers.

```rust use bevy::prelude::; use bevy_ecs_ldtk::prelude::;

fn main() { App::new() .addplugins(DefaultPlugins) .addplugin(LdtkPlugin) .addstartupsystem(setup) .insertresource(LevelSelection::Index(0)) .registerldtk_entity::("MyEntityIdentifier") .run(); }

fn setup(mut commands: Commands, asset_server: Res) { commands.spawn(Camera2dBundle::default());

commands.spawn(LdtkWorldBundle {
    ldtk_handle: asset_server.load("my_project.ldtk"),
    ..Default::default()
});

}

[derive(Bundle, LdtkEntity)]

pub struct MyBundle { a: ComponentA, b: ComponentB, #[spritesheetbundle] #[bundle] sprite_bundle: SpriteSheetBundle, } ```

There are other attributes available to #[derive(LdtkEntity)] and #[derive(LdtkIntCell)], see the documentation for more details.

By default, LDtk Entities and IntGrid tiles get spawned with EntityInstance and IntGridCell components respectfully. So, you can flesh out these entities in a system that queries for Added<EntityInstance> or Added<IntGridCell> if you need more access to the world, or if you just don't want to use the LdtkEntity and LdtkIntCell traits.

To load a new level, you can just update the LevelSelection resource. Be sure to check out the LdtkSettings resource and the LevelSet component for additional level-loading options.

Compatibility

| bevy | bevyecstilemap | LDtk | bevyecsldtk | | --- | --- | --- | --- | | 0.10 | 0.10 | 1.1+ | 0.6 | | 0.9 | 0.9 | 1.1 | 0.5 | | 0.8 | 0.7 | 1.1 | 0.4 | | 0.7 | 0.6 | 1.1 | 0.3 | | 0.6 | 0.5 | 0.9 | 0.2 | | 0.6 | 0.5 | 0.9 | 0.1 |

Asset Credits