diff --git a/client/src/lib.rs b/client/src/lib.rs index 04b159ff30..4a4dc91de1 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -149,17 +149,15 @@ impl Client { }); // Step 1 - if - self.state.read_storage::().get(self.player).is_some() && - self.state.read_storage::().get(self.player).is_some() && - self.state.read_storage::().get(self.player).is_some() - { - // TODO: remove this - const PLAYER_VELOCITY: f32 = 100.0; - // TODO: Set acceleration instead - self.state.write_component(self.player, comp::phys::Vel(Vec3::from(input.move_dir * PLAYER_VELOCITY) * 0.1)); + if let (Some(_), Some(vel), Some(_)) = ( + self.state.read_component_cloned::(self.player), + self.state.read_component_cloned::(self.player), + self.state.read_component_cloned::(self.player), + ) { + self.state.write_component(self.player, comp::phys::Vel(vel.0 + input.move_dir * 2.0 - vel.0.map(|e| e * e.abs() + e) * 0.03)); + if input.move_dir.magnitude() > 0.01 { - self.state.write_component(self.player, comp::phys::Dir(input.move_dir.normalized().into())); + self.state.write_component(self.player, comp::phys::Dir(vel.0.normalized() * Vec3::new(1.0, 1.0, 0.0))); self.state.write_component(self.player, comp::Animation::Run); } else { self.state.write_component(self.player, comp::Animation::Idle); diff --git a/voxygen/src/scene/camera.rs b/voxygen/src/scene/camera.rs index 750bd1e359..29a2d777ec 100644 --- a/voxygen/src/scene/camera.rs +++ b/voxygen/src/scene/camera.rs @@ -21,7 +21,7 @@ impl Camera { Self { focus: Vec3::unit_z() * 10.0, ori: Vec3::zero(), - dist: 150.0, + dist: 10.0, fov: 1.3, aspect, } diff --git a/voxygen/src/scene/mod.rs b/voxygen/src/scene/mod.rs index 216601114a..b7fb9352f3 100644 --- a/voxygen/src/scene/mod.rs +++ b/voxygen/src/scene/mod.rs @@ -97,7 +97,7 @@ impl Scene { }, // Zoom the camera when a zoom event occurs Event::Zoom(delta) => { - self.camera.zoom_by(-delta); + self.camera.zoom_by(delta * 0.3); true }, // All other events are unhandled @@ -118,7 +118,7 @@ impl Scene { .unwrap_or(Vec3::zero()); // Alter camera position to match player - self.camera.set_focus_pos(player_pos); + self.camera.set_focus_pos(player_pos + Vec3::unit_z() * 1.5); // Compute camera matrices let (view_mat, proj_mat, cam_pos) = self.camera.compute_dependents();