tinkering on 3rd person mode

This commit is contained in:
yuni 2024-03-30 15:37:51 +01:00
parent a57b0808b6
commit a5c796d491
4 changed files with 14 additions and 11 deletions

4
Cargo.lock generated
View file

@ -2696,7 +2696,7 @@ dependencies = [
"downcast-rs",
"either",
"nalgebra",
"num-derive 0.4.2",
"num-derive",
"num-traits",
"rayon",
"rustc-hash",
@ -2718,7 +2718,7 @@ dependencies = [
"downcast-rs",
"either",
"nalgebra",
"num-derive 0.4.2",
"num-derive",
"num-traits",
"rayon",
"rustc-hash",

View file

@ -76,7 +76,7 @@ impl Default for Actor {
v: Vec3::ZERO,
inside_entity: NO_RIDE,
angular_momentum: Quat::from_euler(EulerRot::XYZ, 0.001, 0.01, 0.003),
camdistance: 10.0,
camdistance: 15.0,
}
}
}
@ -306,10 +306,9 @@ pub fn handle_vehicle_enter_exit(
if vehicle == event.vehicle {
if event.is_entering {
// Entering Vehicle
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::EnterVehicle));
*driver_vis = Visibility::Hidden;
*driver_trans = vehicle_trans.clone();
if event.is_player {
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::EnterVehicle));
//player_actor.inside_entity = entity.index();
*vehicle_vis = Visibility::Hidden;
driver_actor.v = vehicle_actor.v;
@ -320,9 +319,9 @@ pub fn handle_vehicle_enter_exit(
}
else {
// Exiting Vehicle
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Switch));
*driver_vis = Visibility::Inherited;
if event.is_player {
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Switch));
*vehicle_vis = Visibility::Inherited;
vehicle_actor.v = driver_actor.v;
vehicle_actor.angular_momentum = driver_actor.angular_momentum;
@ -333,7 +332,6 @@ pub fn handle_vehicle_enter_exit(
}
else {
*driver_trans = vehicle_trans.clone();
*driver_trans = vehicle_trans.clone();
}
}
}

View file

@ -75,7 +75,8 @@ pub fn handle_input(
fn manage_player_actor(
settings: Res<settings::Settings>,
mut q_playercam: Query<&mut Visibility, With<actor::PlayerCamera>>
mut q_playercam: Query<&mut Visibility, With<actor::PlayerCamera>>,
mut q_hiddenplayer: Query<&mut Visibility, (With<actor::Player>, Without<actor::PlayerCamera>)>,
) {
for mut vis in &mut q_playercam {
if settings.third_person {
@ -85,6 +86,9 @@ fn manage_player_actor(
*vis = Visibility::Hidden;
}
}
for mut vis in &mut q_hiddenplayer {
*vis = Visibility::Hidden;
}
}
#[allow(clippy::too_many_arguments)]
@ -219,12 +223,12 @@ fn run_camera_controller(
+ mouse_delta.y * RADIANS_PER_DOT * controller.sensitivity)
.clamp(-PI / 2., PI / 2.);
controller.yaw += mouse_delta.x * RADIANS_PER_DOT * controller.sensitivity;
player_transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, -controller.yaw, controller.pitch);
camera_transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, PI-controller.yaw, -controller.pitch);
player_transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, -controller.yaw, controller.pitch).normalize();
camera_transform.rotation = Quat::from_euler(EulerRot::ZYX, 0.0, PI-controller.yaw, -controller.pitch).normalize();
}
if settings.third_person {
camera_transform.translation = player_transform.translation + camera_transform.rotation * Vec3::new(0.0, 0.0, actor.camdistance);
camera_transform.translation = player_transform.translation + camera_transform.rotation * (actor.camdistance * Vec3::new(0.0, 0.2, 1.0));
}
else {
camera_transform.translation = player_transform.translation;

View file

@ -41,6 +41,7 @@ impl Plugin for WorldPlugin {
//app.add_systems(Update, asset_loaded.after(load_cubemap_asset));
//app.add_systems(Update, swap_world_on_ar_toggle);
app.add_plugins(PhysicsPlugins::default());
//app.add_plugins(PhysicsDebugPlugin::default());
app.insert_resource(ClearColor(Color::rgb(0.0, 0.0, 0.0)));
app.insert_resource(Gravity(Vec3::splat(0.0)));
}