helicopter movement + delta time
This commit is contained in:
@@ -183,15 +183,16 @@ impl World {
|
||||
|
||||
// update all helicopter positions
|
||||
for i in 0..self.nodes[&Nodes::HeliRoot].len() {
|
||||
if i == self.player.node_index { continue; }
|
||||
let iter_heli_heading = toolbox::simple_heading_animation(elapsed + i as f32 * 1.6f32);
|
||||
let heli_root = &mut self.nodes.get_mut(&Nodes::HeliRoot).unwrap()[i];
|
||||
heli_root.position.x = iter_heli_heading.x;
|
||||
heli_root.position.y = 15.0;
|
||||
heli_root.position.z = iter_heli_heading.z;
|
||||
heli_root.rotation.z = iter_heli_heading.roll;
|
||||
heli_root.rotation.y = iter_heli_heading.yaw;
|
||||
heli_root.rotation.x = iter_heli_heading.pitch;
|
||||
if i != self.player.node_index {
|
||||
let iter_heli_heading = toolbox::simple_heading_animation(elapsed + i as f32 * 1.6f32);
|
||||
let heli_root = &mut self.nodes.get_mut(&Nodes::HeliRoot).unwrap()[i];
|
||||
heli_root.position.x = iter_heli_heading.x;
|
||||
heli_root.position.y = 15.0;
|
||||
heli_root.position.z = iter_heli_heading.z;
|
||||
heli_root.rotation.z = iter_heli_heading.roll;
|
||||
heli_root.rotation.y = iter_heli_heading.yaw;
|
||||
heli_root.rotation.x = iter_heli_heading.pitch;
|
||||
}
|
||||
|
||||
self.nodes.get_mut(&Nodes::HeliMainRotor).unwrap()[i].rotation.y = elapsed * rotor_speed;
|
||||
self.nodes.get_mut(&Nodes::HeliTailRotor).unwrap()[i].rotation.x = elapsed * rotor_speed;
|
||||
|
||||
@@ -135,7 +135,11 @@ fn main() {
|
||||
}
|
||||
}
|
||||
|
||||
let translation_speed = 1.0;
|
||||
let camera_speed = 80.0;
|
||||
let player_move_speed = 60.0;
|
||||
let player_turn_speed = 1.0;
|
||||
|
||||
let player_forward = world.get_player_node().forward();
|
||||
|
||||
// Handle keyboard input
|
||||
if let Ok(keys) = pressed_keys.lock() {
|
||||
@@ -161,17 +165,37 @@ fn main() {
|
||||
}
|
||||
|
||||
VirtualKeyCode::Right => {
|
||||
world.camera.position -= world.camera.right() * translation_speed;
|
||||
world.camera.position -= world.camera.right() * camera_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::Left => {
|
||||
world.camera.position += world.camera.right() * translation_speed;
|
||||
world.camera.position += world.camera.right() * camera_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::Down => {
|
||||
world.camera.position.y -= translation_speed;
|
||||
world.camera.position.y -= camera_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::Up => {
|
||||
world.camera.position.y += translation_speed;
|
||||
world.camera.position.y += camera_speed * delta_time;
|
||||
}
|
||||
|
||||
VirtualKeyCode::W => {
|
||||
world.get_player_node_mut().position += player_forward * player_move_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::A => {
|
||||
world.get_player_node_mut().rotation.y += player_turn_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::S => {
|
||||
world.get_player_node_mut().position -= player_forward * player_move_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::D => {
|
||||
world.get_player_node_mut().rotation.y -= player_turn_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::Space => {
|
||||
world.get_player_node_mut().position.y += player_move_speed * delta_time;
|
||||
}
|
||||
VirtualKeyCode::LShift => {
|
||||
world.get_player_node_mut().position.y -= player_move_speed * delta_time;
|
||||
}
|
||||
|
||||
_ => { }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user