线速度x和y都大于零,但仍然没有运动

Linear velocity x and y are greater than zero, but still no movement

本文关键字:运动 大于 线速度      更新时间:2023-09-26

所以我有一些事情让我感到困惑,涉及一个不移动的身体。我在主体上使用了SetLinearVelocity()成员函数,如下所示:

dude.body.SetLinearVelocity(new b2Vec2(0.1, 0.1));

然后在调用Step函数之前放置一个console.log():

console.log(dude.body.GetPosition().x);
console.log(dude.body.m_linearVelocity);
world.Step(1/60, 10, 10);
console.log(dude.body.GetPosition().x);

这是在我的游戏动画循环中,所以console.log被一遍又一遍地调用。它说m_linearVelocityb2Vec2, x的值为0.1,y的值为0.1。

因此,在Step函数调用之前,m_linearVelocity的x和y值都大于零,但从上面代码段的开始到结束,dude.body.GetPosition().x中从来没有任何变化。

我不知道从哪里开始追查这个问题,因为这对我来说毫无意义。有人知道为什么会这样吗?

编辑:我应该补充一下,它在有重力的情况下是有效的,但在零重力的情况下,它不会移动,即使线速度大于零。

找到了自己问题的答案。但是,我需要使用SetAwake(true):

而不是示例中的WakeUp()函数。

http://www.box2d.org/forum/viewtopic.php?f=8& t = 3181