diff --git a/src/flycam.rs b/src/flycam.rs index 3256a19..48a717c 100644 --- a/src/flycam.rs +++ b/src/flycam.rs @@ -7,12 +7,17 @@ use bevy::{ prelude::*, utils::tracing::info, }; +use heron::{ + prelude::{CollisionShape, RigidBody}, + CollisionEvent, +}; pub const PLANET_RADIUS: f32 = 75.0; -const PLAYER_DIST: f32 = PLANET_RADIUS + 300.0; -const CAM_DIST: f32 = 25.0; +const PLAYER_DIST: f32 = PLANET_RADIUS + 100.0; +const CAM_DIST: f32 = 30.0; +#[derive(Component, Default)] struct PlayerState { velocity: Vec3, } @@ -23,14 +28,6 @@ struct UpState { cam_up: Vec3, } -impl Default for PlayerState { - fn default() -> Self { - PlayerState { - velocity: Vec3::ZERO, - } - } -} - #[derive(Default)] struct InputState { event_reader: ManualEventReader, @@ -90,7 +87,13 @@ fn setup_player(mut commands: Commands, asset_server: Res) { .with_children(|rider| { rider.spawn_scene(asset_server.load("cyber-bike_no_y_up.glb#Scene0")); }) - .insert(CyberBike); + .insert(CyberBike) + .insert(RigidBody::Dynamic) + .insert(CollisionShape::Cone { + half_height: 2.0, + radius: 0.8, + }) + .insert(PlayerState::default()); } fn setup_dbg_ui(mut commands: Commands, asset_server: Res) { @@ -136,13 +139,12 @@ fn player_move( time: Res