From f53cd2f848e710ce16008f4d96afe23443c86627 Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Thu, 6 Jan 2022 23:58:38 -0800 Subject: [PATCH] Add collision detection, reaction, and gravity. --- src/flycam.rs | 94 +++++++++++++++++++++++++++------------------------ src/main.rs | 47 +++++++++++++------------- 2 files changed, 73 insertions(+), 68 deletions(-) diff --git a/src/flycam.rs b/src/flycam.rs index 48a717c..be52d2a 100644 --- a/src/flycam.rs +++ b/src/flycam.rs @@ -15,17 +15,12 @@ use heron::{ pub const PLANET_RADIUS: f32 = 75.0; const PLAYER_DIST: f32 = PLANET_RADIUS + 100.0; -const CAM_DIST: f32 = 30.0; +const CAM_DIST: f32 = 50.0; #[derive(Component, Default)] struct PlayerState { velocity: Vec3, -} - -#[derive(Default)] -struct UpState { - player_up: Vec3, - cam_up: Vec3, + colliding: bool, } #[derive(Default)] @@ -49,7 +44,7 @@ impl Default for MovementSettings { Self { sensitivity: 1.0, accel: 40., - drag: 0.05, + drag: 0.0005, gravity: 10.0, } } @@ -123,28 +118,20 @@ fn setup_dbg_ui(mut commands: Commands, asset_server: Res) { .insert(UpText); } -fn dbg_ui_system(state: Res, mut query: Query<&mut Text, With>) { - let cos = state.player_up.dot(state.cam_up); - - let mut text = query.single_mut(); - text.sections[0].value = format!( - "up: {:?}\ncam_up: {:?}\ntheta: {:.2}", - state.player_up, - state.cam_up, - cos.acos().to_degrees() - ); +fn ui_system(pstate_query: Query<&PlayerState>, mut text_query: Query<&mut Text, With>) { + let mut text = text_query.single_mut(); + let pstate = pstate_query.single(); + text.sections[0].value = format!("{:.2}", pstate.velocity.length()); } fn player_move( time: Res