一帧内移动的线速度和距离

Linear velocity vs distance moved in one frame

我正在尝试通过计算在一帧中将它一直移动所需的相应速度来将 KinematicBody 移动特定距离。下面是一段描述我在做什么的伪代码:

var v = 0;
function update(){
    // do update
    world.Step(1/60, 10, 10);

    // do rendering stuff

    // set linear velocity to v
    objectBody.SetLinearVelocity(new b2Vec2(0, v));
    // reset v to 0
    v = 0;

    // wait 16.6ms

    update();
}

function moveBy(n){
    v = n * 60;  // set velocity to be n units/sec
}

调用moveBy(300)实际上并没有将它移动300个单位。它确实向下移动,但距离不是300个单位。

为什么会这样,可能的解决方案是什么?

显然,为了防止隧道效应,KinematicBody 在一步中可以移动多远存在最大限制。为了解决这个问题,我不得不缩小一切。