2012-12-11 3 views
0

2 개의 정체가 하나씩 있습니다.
맨 위를 동적으로 전환하면 복구하기 전에 1 초 동안 정적으로 싱크됩니다.b2 몸체가 정체되어 있음

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

왜 이런 일이 발생합니까? 어떻게 그것을 막을 수 있습니까? 매우 짜증나.

답변

0

이것은 정적 바디가 충돌하지 않기 때문에 발생합니다. 따라서 동적 바디가 될 때까지 접촉하지 않습니다. 불행히도 그것은 접촉이 성립되기까지 한 걸음 걸립니다. 그리고 그 단계에서 중력 또한 행동 할 기회가 있습니다.

첫 번째 단계에서 동적 바디의 중력 스케일을 0으로 만들면이 문제를 피할 수 있지만 더 나은 방법은 스테핑 전에 동적 바디의 고정구에서 Refilter를 호출하는 것입니다.

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

(사실이 나 자신을 시도하지 않은,하지만 난 그이 대해 필터링 기능을가 무엇인지 생각합니다.)

+0

그것은 말한다 ''b2Fixture '에'대해 필터링 '라는 이름의 부재 'm_filter '를 의미 했습니까?' – iamruskie

+0

사용중인 버전은 확실하지 않지만 최신 버전은 http://code.google.com/p/box2d/source/browse/trunk/Box2D/Box2D/Dynamics/입니다. b2Fixture.h – iforce2d

+0

나는 최신 cocos2dbox2d 템플릿을 가지고 있습니다. 어떻게 box2d 만 업데이트합니까? – iamruskie

관련 문제