我正在尝试通过计算在一帧中将它一直移动所需的相应速度来将 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 在一步中可以移动多远以防止隧道效应存在最大限制。为了解决这个问题,我不得不缩小一切。
关于javascript - 一帧内移动的线速度和距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40252700/