基本上我想为我的玩家在 rust 贝维做重力系统,但是我不知道怎么做,所以我想出了这个主意,把-y
值乘以秒。如果你有其他的想法请告诉我。希望你能理解我想说的。
fn player_2_keyboard_event_system(
kb: Res<Input<KeyCode>>,
mut query: Query<&mut Velocity2, With<Player2>>,
time: Res<Time>,
) {
if let Ok(mut velocity2) = query.get_single_mut() {
velocity2.x = if kb.pressed(KeyCode::A) {
-1.
} else if kb.pressed(KeyCode::D) {
1.
} else {
0.
};
if let Ok(mut velocity2) = query.get_single_mut() {
velocity2.y = if kb.pressed(KeyCode::S) {
-1.
} else if kb.pressed(KeyCode::W) {
1.
} else {
-0.1 * time.delta_seconds() // Something like this!!!
}
}
}
}
我试着用贝维引擎在《铁 rust 》中制造重力,但是我不知道我该怎么做。所以我想出了这个主意。
1条答案
按热度按时间cnh2zyt31#
这看起来是个不错的方法,除了time.delta_seconds()会给予你自上次帧更新以来的时间,这有时会不稳定,所以物理效果会受到影响。如果你想要精确的物理效果,你应该定义自己的物理时间步长,在time.delta_seconds()中计算尽可能多的时间步长,并为下一帧保存剩余的时间。