当我将其设置为1时,Box2D SetGravityScale不起作用

时间:2014-08-07 08:28:12

标签: c++ box2d

我有一个跳跃游戏。有些物品在跳线收集时会在空中停留3秒然后掉下来。为此,我做了以下事情:

// to stop the body in the air
body->SetGravityScale(0);
body->SetLinearDamping(7); // don't want abrupt stopping

3秒钟后让身体再次从空中坠落到地面:

body->SetGravityScale(1);                
body->SetLinearDamping(0);

但它继续留在空中。只有当我向它施加一个小冲动时,它才开始下降。为什么呢?

编辑:我已明确设置:

m_world.SetAllowSleeping(false);

但无论如何,我应该运用线性冲动让他退缩或只是做:

body->SetAwake(true);

即使m_world.SetAllowSleeping(false);,身体也在睡觉。这个可以吗?

1 个答案:

答案 0 :(得分:0)

检查你的世界,看看它是否有重力,即使重力等级= 1,你的身体也不会在没有重力的情况下坠落。

如果您的问题不存在,请检查您的身体是否受到重力检查的影响,如果身体是一个动态的身体。

我认为如果我在你的问题中评论它会是最好的,但我没有足够的Rep:/

希望有所帮助:)