mod debug; use debug::DebugPlugin; use serde::Deserialize; use std::fs::File; use std::io::BufReader; use bevy_inspector_egui::Inspectable; use bevy::{prelude::*, sprite::MaterialMesh2dBundle, render::camera::ScalingMode}; use bevy::diagnostic::{FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin}; fn main() { App::new() .add_plugins(DefaultPlugins) .add_startup_system(spawn_camera) .add_startup_system(setup) .add_system(movement.label("movement")) .add_system(camera_follow.after("movement")) .add_plugin(LogDiagnosticsPlugin::default()) .add_plugin(FrameTimeDiagnosticsPlugin::default()) .run(); } fn spawn_camera(mut commands: Commands) { let mut camera = OrthographicCameraBundle::new_2d(); camera.orthographic_projection.scaling_mode = ScalingMode::None; camera.transform = Transform::from_xyz(0.0, 0.0, 100.0); commands.spawn_bundle(camera); } fn camera_follow( player_query: Query<(&Transform, With)>, mut camera_query: Query<&mut Transform, (Without, With)>, ) { let (player_transform, _) = player_query.single(); let mut camera_transform = camera_query.single_mut(); camera_transform.translation.x = player_transform.translation.x; camera_transform.translation.y = player_transform.translation.y; } #[derive(Component, Inspectable)] pub struct Player; fn movement ( mut player_query: Query<(&Player, &mut Transform)>, keyboard: Res>, time: Res