add very ugly camera-follows-player effect
Some checks failed
CI / Docs (push) Has been cancelled
CI / Clippy lints (push) Has been cancelled
CI / Bevy lints (push) Has been cancelled
CI / Tests (push) Has been cancelled
CI / Check web (push) Has been cancelled
CI / Format (push) Failing after 11s

This commit is contained in:
Roberto Maurizzi 2025-07-17 22:49:06 +08:00
parent 2718983cd1
commit 3c4ca4371f
Signed by: robm
GPG key ID: F26E59AFAAADEA55

View file

@ -62,13 +62,14 @@ impl Default for MovementController {
fn apply_movement( fn apply_movement(
_time: Res<Time>, _time: Res<Time>,
mut camera: Query<&mut Transform, With<Camera>>,
movement_query: Query<&MovementController, With<Player>>, movement_query: Query<&MovementController, With<Player>>,
player_transform_query: Query<&Transform, With<Player>>, player_transform_query: Query<&GlobalTransform, With<Player>>,
mut players: Query<&mut GridCoords, With<Player>>, mut players: Query<&mut GridCoords, With<Player>>,
level_selection: Res<LevelSelection>, level_selection: Res<LevelSelection>,
// level_walls: Res<LevelWalls>, // level_walls: Res<LevelWalls>,
level_walls: Res<MultiLevelWalls>, level_walls: Res<MultiLevelWalls>,
) { ) -> Result {
let level_selection_iid = match level_selection.as_ref() { let level_selection_iid = match level_selection.as_ref() {
LevelSelection::Iid(iid) => iid, LevelSelection::Iid(iid) => iid,
_ => panic!("level should be selected by iid"), _ => panic!("level should be selected by iid"),
@ -93,7 +94,7 @@ fn apply_movement(
} else { } else {
// unrecognized intent, log a warning // unrecognized intent, log a warning
warn!("Unrecognized intent: {:?}", controller.intent); warn!("Unrecognized intent: {:?}", controller.intent);
return; return Ok(());
}; };
info!("player old absolute coords: {:?}", player_abs_coords); info!("player old absolute coords: {:?}", player_abs_coords);
let destination = *player_abs_coords + movement_direction; let destination = *player_abs_coords + movement_direction;
@ -107,12 +108,17 @@ fn apply_movement(
player_transform_query.single() player_transform_query.single()
); );
// transform.translation += velocity.extend(0.0) * time.delta_secs(); // transform.translation += velocity.extend(0.0) * time.delta_secs();
if let Ok(player_transform) = player_transform_query.single() {
let mut camera_transform = camera.single_mut()?;
camera_transform.translation = player_transform.translation();
}
} else { } else {
info!("SDENG!"); info!("SDENG!");
} }
level_walls.debug_collisions(level_selection_iid, &player_abs_coords); level_walls.debug_collisions(level_selection_iid, &player_abs_coords);
} }
} }
Ok(())
} }
#[derive(Component, Reflect)] #[derive(Component, Reflect)]