Put the camera behind the bike.

This commit is contained in:
Joe Ardent 2022-01-07 00:45:05 -08:00
parent f53cd2f848
commit 7ab0730dfd
2 changed files with 19 additions and 9 deletions

View file

@ -12,7 +12,7 @@ use heron::{
CollisionEvent,
};
pub const PLANET_RADIUS: f32 = 75.0;
pub const PLANET_RADIUS: f32 = 150.0;
const PLAYER_DIST: f32 = PLANET_RADIUS + 100.0;
const CAM_DIST: f32 = 50.0;
@ -91,7 +91,7 @@ fn setup_player(mut commands: Commands, asset_server: Res<AssetServer>) {
.insert(PlayerState::default());
}
fn setup_dbg_ui(mut commands: Commands, asset_server: Res<AssetServer>) {
fn setup_ui(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.spawn_bundle(UiCameraBundle::default());
commands
@ -160,9 +160,12 @@ fn player_move(
bike_xform.translation += player_state.velocity * dt;
}
let look_at = bike_xform.translation;
let cam_pos = bike_xform.translation + (bike_xform.back() * CAM_DIST * 1.3) + (up * CAM_DIST);
let (mut cam_xform, _) = cam_query.single_mut();
cam_xform.translation = bike_xform.translation + (up * CAM_DIST);
cam_xform.look_at(bike_xform.translation, Vec3::Y);
cam_xform.translation = cam_pos;
cam_xform.look_at(look_at, up);
}
fn player_look(
@ -282,7 +285,7 @@ impl Plugin for PlayerPlugin {
.init_resource::<MovementSettings>()
.init_resource::<InputState>()
.add_startup_system(setup_player)
.add_startup_system(setup_dbg_ui)
.add_startup_system(setup_ui)
.add_system(ui_system)
.add_system(player_move.label("move"))
.add_system(player_look.after("move"))

View file

@ -14,7 +14,7 @@ fn main() {
.insert_resource(MovementSettings {
sensitivity: 0.3, // default: 1.0
accel: 20.0, // default: 40.0
drag: 0.1, // default: 0.05
drag: 0.01, // default: 0.0005
gravity: 10.0, // default: 10.0
})
.add_startup_system(setup.label("world"))
@ -42,6 +42,7 @@ fn setup(
intensity: 1_000.0,
range: LIGHT_RANGE,
color: Color::RED,
radius: 10.0,
..Default::default()
};
@ -49,6 +50,7 @@ fn setup(
intensity: 1_000.0,
range: LIGHT_RANGE,
color: Color::BLUE,
radius: 10.0,
..Default::default()
};
@ -56,12 +58,13 @@ fn setup(
intensity: 1_000.0,
range: LIGHT_RANGE,
color: Color::PURPLE,
radius: 10.0,
..Default::default()
};
commands.insert_resource(AmbientLight {
color: Color::WHITE,
brightness: 0.12,
brightness: 0.32,
});
// world
@ -218,7 +221,11 @@ fn setup(
});
}
fn animate_lights(mut query: Query<&mut Transform, (With<PointLight>, With<Animate>)>) {
fn animate_lights(
time: Res<Time>,
mut query: Query<&mut Transform, (With<PointLight>, With<Animate>)>,
) {
let dt = time.delta_seconds();
for mut transform in query.iter_mut() {
let translation = &transform.translation;
let x = translation.x;
@ -230,7 +237,7 @@ fn animate_lights(mut query: Query<&mut Transform, (With<PointLight>, With<Anima
};
// 10 degrees == 0.174533 radians
let anim_rate = 0.174533 / 5.0;
let anim_rate = 0.174533 * dt;
let theta = z.atan2(x) + anim_rate;
let x_new = LIGHT_DIST * theta.cos();
let z_new = LIGHT_DIST * theta.sin();