box2d,是否可以冻结身体?

时间:2011-03-24 11:23:30

标签: objective-c cocos2d-iphone box2d objective-c++

嘿,我想知道是否可以从bodyList()冻结一个物体,然后解冻它。 解冻应保留其所有的惯性,以便它们沿着它们的路径继续,如果它们好像从未冻结过......

基本上我使用b-> SetType(b2_staticBody)和b-> SetType(b2_dynamicBody)。

但这会产生一个巨大的问题,因为它会重置所有原始惯性值。

千万,谢谢 奥利弗。

2 个答案:

答案 0 :(得分:5)

我现在无法测试,但你试过吗

b->SetActive(false); //freeze
b->SetActive(true); //unfreeze

我认为它会冻结现有的东西,但我不确定它是否保留了intertia。 documentation表示非活动的身体没有被模拟,所以我希望他们只是坐在那里直到再次活动。

答案 1 :(得分:1)

可能你可以设置你的身体不可触摸,指明它是b2Filter。所以它不会与任何其他机构发生碰撞。并施加一个与重力相等的力 - 所以它会留在你想要的地方。

但我认为正确的方法是将它的类型设置为静态并保留它的惯性参数以便以后恢复它们