diff options
author | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-03-20 19:54:41 +0200 |
---|---|---|
committer | Zhongheng Liu <z.liu@outlook.com.gr> | 2025-03-20 19:54:41 +0200 |
commit | aff2c30b3fa025def54cc5a249ba539d514b2a07 (patch) | |
tree | 5802383c30bf1580e2d7ef4d3bdf91e799a73add /src/main.rs | |
parent | 221434eafec46c6e1974d40f17893fee379cead8 (diff) | |
download | martian-rescue-rs-aff2c30b3fa025def54cc5a249ba539d514b2a07.tar.gz martian-rescue-rs-aff2c30b3fa025def54cc5a249ba539d514b2a07.tar.bz2 martian-rescue-rs-aff2c30b3fa025def54cc5a249ba539d514b2a07.zip |
feat: player controls
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/main.rs b/src/main.rs index 319eabc..5e821f9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,6 +5,7 @@ mod controllable; use avian2d::prelude::*; use bevy::{prelude::*, winit::WinitSettings}; use controllable::Player; +use lunar::DestPlanet; fn main() { println!("Hello, world!"); App::new() @@ -16,15 +17,19 @@ fn main() { Startup, ( setup::setup_starting_planet, - setup::setup_init, + setup::setup_init, + controllable::setup_player_with_controls, lunar::setup_moon ) ) .add_systems( Update, ( - update_gravitational_forces, - lunar::update_lunar_transform + lunar::update_lunar_transform, + controllable::player_movements, + controllable::camera_follow_player, + controllable::check_transition_level, + update_gravitational_forces, ) ) .run(); @@ -49,7 +54,7 @@ fn calculate_force_vector( pos_actor: Vec2, pos_incident: Vec2, ) -> Vec2 { - let grav_const = 100.0; + let grav_const = 15.0; (grav_const * mass_actor * mass_incident / (pos_actor.distance_squared(pos_incident))) * Vec2 { x: pos_actor.x - pos_incident.x, @@ -63,17 +68,24 @@ fn calculate_force_vector( } fn update_gravitational_forces( mut query_planet: Query<(Entity, &StartPlanet, &Transform)>, + mut query_planet2: Query<(Entity, &DestPlanet, &Transform)>, mut query_object: Query<(Entity, &Player, &mut ExternalForce, &Transform)>, ) { let (_es, ps, ts) = query_planet.single_mut(); + let (_es, planet2, trans2) = query_planet2.single_mut(); let (_ed, player, mut exd, td) = query_object.single_mut(); - let f = calculate_force_vector( + let f0 = calculate_force_vector( ps.planet_mass_kg, player.mass_kg, ts.translation.xy(), td.translation.xy(), ); - info!("Force: {}, Transform: {}", f, td.translation); - exd.apply_force(f); + let f1 = calculate_force_vector( + planet2.planet_mass_kg, + player.mass_kg, + trans2.translation.xy(), + td.translation.xy()); + //info!("Force: {}, Transform: {}", f, td.translation); + exd.apply_force(f0).apply_force(f1); } |