fix z index of stuff
This commit is contained in:
parent
7518ceff39
commit
6d142e863a
File diff suppressed because one or more lines are too long
|
@ -2,6 +2,25 @@ use bevy::prelude::*;
|
|||
use bevy_ecs_ldtk::prelude::*;
|
||||
use bevy_xpbd_2d::prelude::*;
|
||||
|
||||
#[derive(Component, Default, Reflect)]
|
||||
pub struct ZIndex(i32);
|
||||
|
||||
impl ZIndex {
|
||||
pub fn from_field(instance: &EntityInstance) -> ZIndex {
|
||||
Self(
|
||||
*instance
|
||||
.get_int_field("ZIndex")
|
||||
.expect("expected entity to have Z Index field")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: Into<i32>> From<T> for ZIndex {
|
||||
fn from(value: T) -> Self {
|
||||
ZIndex(value.into())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Component, Default)]
|
||||
pub struct Tile;
|
||||
|
||||
|
@ -27,9 +46,29 @@ pub struct TileIntCell {
|
|||
tile_bundle: TileBundle,
|
||||
}
|
||||
|
||||
|
||||
#[derive(Default, Bundle, LdtkEntity)]
|
||||
pub struct PlatformEntity {
|
||||
#[with(ZIndex::from_field)]
|
||||
z_index: ZIndex,
|
||||
#[sprite_sheet_bundle]
|
||||
sprite_sheet_bundle: SpriteSheetBundle
|
||||
}
|
||||
|
||||
|
||||
pub struct LevelPlugin;
|
||||
impl Plugin for LevelPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.register_default_ldtk_int_cell_for_layer::<TileIntCell>("Ground");
|
||||
app
|
||||
.register_type::<ZIndex>()
|
||||
.add_systems(Last, update_z_index)
|
||||
.register_ldtk_entity::<PlatformEntity>("Platforms")
|
||||
.register_default_ldtk_int_cell_for_layer::<TileIntCell>("Ground");
|
||||
}
|
||||
}
|
||||
|
||||
fn update_z_index(mut query: Query<(&mut Transform, &ZIndex), Changed<ZIndex>>) {
|
||||
for (mut transform, z_index) in query.iter_mut() {
|
||||
transform.translation.z = z_index.0 as f32;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,15 +2,16 @@ mod controller;
|
|||
mod input;
|
||||
mod movement;
|
||||
|
||||
use bevy::prelude::*;
|
||||
use bevy::{prelude::*, render::view::RenderLayers};
|
||||
use bevy_ecs_ldtk::prelude::*;
|
||||
use leafwing_input_manager::{action_state::ActionState, InputManagerBundle};
|
||||
|
||||
use self::{
|
||||
controller::{CharacterControllerBundle, CharacterControllerPlugin, Jumping},
|
||||
input::{InputPlugin, PlayerAction},
|
||||
movement::MovementDirection,
|
||||
movement::MovementDirection
|
||||
};
|
||||
use crate::level::ZIndex;
|
||||
|
||||
#[derive(Component, Deref)]
|
||||
pub struct Animation(benimator::Animation);
|
||||
|
@ -48,6 +49,8 @@ impl Default for PlayerBundle {
|
|||
#[derive(Default, Bundle, LdtkEntity)]
|
||||
pub struct PlayerEntity {
|
||||
player_bundle: PlayerBundle,
|
||||
#[with(ZIndex::from_field)]
|
||||
z_index: ZIndex,
|
||||
#[sprite_sheet_bundle]
|
||||
sprite_sheet_bundle: SpriteSheetBundle,
|
||||
}
|
||||
|
@ -56,7 +59,14 @@ pub struct PlayerPlugin;
|
|||
impl Plugin for PlayerPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_plugins((InputPlugin, CharacterControllerPlugin))
|
||||
.add_systems(Update, (apply_movement_input, apply_jumping_input, animate))
|
||||
.add_systems(
|
||||
Update,
|
||||
(
|
||||
apply_movement_input,
|
||||
apply_jumping_input,
|
||||
animate,
|
||||
),
|
||||
)
|
||||
.register_ldtk_entity::<PlayerEntity>("Player");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue