diff --git a/src/player.rs b/src/player.rs index 1b77736..b15d22d 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,7 +1,6 @@ use bevy::{ input::mouse::MouseMotion, prelude::*, - render::camera::{PerspectiveProjection, VisibleEntities}, }; use bevy_rapier3d::{ na::{clamp, wrap, Matrix3x1}, @@ -41,8 +40,6 @@ struct CameraData { #[derive(Bundle)] pub struct PlayerBundle { - pub perspective_projection: PerspectiveProjection, - pub visible_entities: VisibleEntities, pub transform: Transform, pub global_transform: GlobalTransform, player_marker: PlayerMarker, @@ -57,8 +54,6 @@ impl Default for PlayerBundle { .translation(0.0, 3.0, 0.0) .lock_rotations(), collider: ColliderBuilder::cylinder(PLAYER_HEIGHT / 2., PLAYER_WIDTH).friction(0.0), - perspective_projection: Default::default(), - visible_entities: Default::default(), transform: Default::default(), global_transform: Default::default(), player_marker: Default::default(), @@ -94,12 +89,13 @@ fn player_movement_system( for camera_transform in camera_transform_query.iter() { for body_handle in player_query.iter_mut() { let body: &mut RigidBody = bodies.get_mut(body_handle.handle()).unwrap(); + let axis_strafe = movement_axis(&keyboard_input, KeyCode::D, KeyCode::A); let axis_straight = movement_axis(&keyboard_input, KeyCode::S, KeyCode::W); let rotation = camera_transform.rotation; let mut speed_2d: Vec3 = - (strafe_vector(&rotation) * axis_strafe) + (forward_vector(&rotation) * axis_straight); + (strafe_vector(&rotation) * axis_strafe) + (straight_vector(&rotation) * axis_straight); if speed_2d.length() != 0.0 { speed_2d = speed_2d.normalize() * PLAYER_SPEED; } @@ -112,16 +108,15 @@ fn player_movement_system( } } -fn forward_vector(rotation: &Quat) -> Vec3 { - rotation.mul_vec3(Vec3::unit_z()).normalize() +fn straight_vector(rotation: &Quat) -> Vec3 { + let v = rotation.mul_vec3(Vec3::unit_z()); + Vec3::new(v.x, 0.0, v.z).normalize() } fn strafe_vector(rotation: &Quat) -> Vec3 { - let f = forward_vector(rotation); - let f_flattened = Vec3::new(f.x, 0.0, f.z).normalize(); - // Rotate it 90 degrees to get the strafe direction - Quat::from_rotation_y(90.0f32.to_radians()) - .mul_vec3(f_flattened) + let forward = straight_vector(rotation); + Quat::from_rotation_y(FRAC_PI_2) + .mul_vec3(forward) .normalize() }