我有两个静态物体,一个在另一个之上。
当我将顶部的一个切换到动态时,它会在恢复之前沉入静态一秒钟。
_boxBody->SetType(b2_dynamicBody);
_boxBody->SetAwake(true);
为什么会这样?我该如何预防呢?非常烦人。
答案 0 :(得分:0)
这可能是因为静态物体不会碰撞,所以它们之间没有接触,直到它们变为动态。不幸的是,建立联系需要一个步骤,在这个时间步骤中,引力也有机会采取行动。
你可以通过在第一步使动态物体的重力比例为零来避免这种情况,但我认为更好的方法是在踩踏之前在动态物体的固定装置上调用Refilter。
for (b2Fixture* f = body->GetFixtureList(); f; f = f->GetNext())
f->Refilter();
(我实际上并没有尝试过这个,但我认为这就是Refilter功能的用途。)