我试图通过计算在一帧中一直移动它所需的相应速度来将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个单位。
为什么这是可能的解决方案?
答案 0 :(得分:1)
显然,KinematicBody可以在一个步骤中移动多远以防止隧道效应。为了解决这个问题,我不得不缩小一切。