Skip to content

Commit afab4ff

Browse files
committed
Add inertia to plane
1 parent ffb3fcc commit afab4ff

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

demos/src/bin/plane.rs

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ fn main() {
5656
let floor = floor();
5757
let crates = crates();
5858

59+
let mut target_vel_z = 0.0;
5960
let mut cam_vel = Vec3::zero();
6061
let (mut p, mut y, mut r) = (degs(0.0), degs(0.0), degs(0.0));
6162
win.run(|frame| {
@@ -74,8 +75,8 @@ fn main() {
7475
for key in ep.keyboard_state().pressed_scancodes() {
7576
use sdl2::keyboard::Scancode as Sc;
7677
match key {
77-
Sc::W => cam_vel[2] += 0.1,
78-
Sc::S => cam_vel[2] -= 0.05,
78+
Sc::W => target_vel_z += 0.1,
79+
Sc::S => target_vel_z -= 0.05,
7980
Sc::A => tr = rv,
8081
Sc::D => tr = -rv,
8182

@@ -88,13 +89,23 @@ fn main() {
8889
}
8990
}
9091

91-
p = p.lerp(&tp, dt);
92-
y = y.lerp(&ty, dt);
93-
r = r.lerp(&tr, dt);
92+
let ra = 4.0;
93+
p = p.lerp(&tp, ra * dt);
94+
y = y.lerp(&ty, ra * dt);
95+
r = r.lerp(&tr, ra * dt);
96+
97+
let target_vel = cam
98+
.transform
99+
.view_to_world()
100+
.apply(&(target_vel_z * Vec3::Z));
101+
102+
let acc = 8.0;
103+
cam_vel = cam_vel.lerp(&target_vel, acc * dt);
94104

95105
cam.transform.rotate(p, y, r);
96106

97-
cam.transform.translate(cam_vel * dt);
107+
cam.transform
108+
.translate_to(cam.transform.pos + cam_vel * dt);
98109

99110
//
100111
// Render

0 commit comments

Comments
 (0)