用于JavaScript的Box2d:SetLinearVelocity()不起作用

时间:2012-07-18 22:31:02

标签: javascript box2d

首先,这是我在StackOverflow上写的第一篇文章,我实际上是编程的新手,所以如果我说错了,我很抱歉。

我尝试过这项工作 - 我想模拟一个静止不动的身体,为此我使用SetLinearVelocity(new b2Vec2(0, 0))

正如我在其他帖子中看到的那样,重力矢量似乎很重要:它是一个b2Vec2(0, 30);,我的时间步长是1/30秒。

处理特定主体机制的代码如下:

this.clocktick = function(deltaT) {
    this.body.SetLinearVelocity(new b2Vec2(0, 0));

    if(this.body.GetLinearVelocity().y != 15){
        console.debug(this.body.GetLinearVelocity().y);
    }
}

我觉得很有趣的是,身体总是在下降,我已经有一种情况,即使它下降了,调试返回的值为0.

我只想听听解决方案或其他建议来模拟我打算模拟的内容。

THX

1 个答案:

答案 0 :(得分:2)

您需要施加力来取消重力,而不是设定速度。如果你只是设定速度,重力仍然可以在每一步都将它向下推一小部分。 力需要与重力相同,因此应考虑重力矢量和物体的质量:

body.ApplyForce( body.GetMass() * -world.GetGravity(), body.GetWorldCenter() );

...你需要在之前每一步都这样做。