0

我有 2 个静态机构,一个在另一个之上。
当我将顶部切换为动态时,它会在恢复之前陷入静态一秒钟。

_boxBody->SetType(b2_dynamicBody);
_boxBody->SetAwake(true);

为什么会这样?我该如何预防呢?很烦人。

4

1 回答 1

0

这可能是因为静态物体不会碰撞,所以它们之间没有接触,直到一个变成动态的。不幸的是,建立联系需要一个时间步,在那个时间步内,重力也有机会起作用。

您可以通过在第一步将动态体的重力比例设为零来避免这种情况,但我认为更好的方法是在步进之前在动态体的固定装置上调用 Refilter。

for (b2Fixture* f = body->GetFixtureList(); f; f = f->GetNext())
    f->Refilter();

(我自己实际上并没有尝试过,但我认为这就是 Refilter 函数的用途。)

于 2012-12-11T09:52:46.353 回答