Put the camera behind the bike.
This commit is contained in:
parent
f53cd2f848
commit
7ab0730dfd
2 changed files with 19 additions and 9 deletions
|
@ -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"))
|
||||
|
|
15
src/main.rs
15
src/main.rs
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue