如何在您的 rust 码上使用时间/秒?

xfb7svmp  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(235)

基本上我想为我的玩家在 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 》中制造重力,但是我不知道我该怎么做。所以我想出了这个主意。

cnh2zyt3

cnh2zyt31#

这看起来是个不错的方法,除了time.delta_seconds()会给予你自上次帧更新以来的时间,这有时会不稳定,所以物理效果会受到影响。如果你想要精确的物理效果,你应该定义自己的物理时间步长,在time.delta_seconds()中计算尽可能多的时间步长,并为下一帧保存剩余的时间。

相关问题