一帧内移动的线速度和距离
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 在一步中可以移动多远存在最大限制。为了解决这个问题,我不得不缩小一切。
我正在尝试通过计算在一帧中将它一直移动所需的相应速度来将 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 在一步中可以移动多远存在最大限制。为了解决这个问题,我不得不缩小一切。