首先,这是我在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
答案 0 :(得分:2)
您需要施加力来取消重力,而不是设定速度。如果你只是设定速度,重力仍然可以在每一步都将它向下推一小部分。 力需要与重力相同,因此应考虑重力矢量和物体的质量:
body.ApplyForce( body.GetMass() * -world.GetGravity(), body.GetWorldCenter() );
...你需要在之前每一步都这样做。