Box2D (iOS 기반)에이 매우 이상한 문제가 있습니다. 나는 화면의 바닥에 몸을 숨기고있다. 몸체를 b2_dynamicBody에서 body->SetType(b2_staticBody)
을 사용하여 b2_dynamicBody로 설정 한 다음 나중에 다시 밀어 넣기 전에 화면 아래쪽으로 내려갑니다 (여러 프레임이 움직이는 것을 볼 수 있듯이). 바닥과 올바르게 휴식합니다.세계를 빠져 나가는 Box2D 도형
이 동작은 화면 맨 아래에서만 발생하는 것으로 보입니다. 서로 다른 몸에 앉아있는 것과 똑같은 일을하는 것은 이러한 행동을 초래하지 않습니다.
내가 (screenRect의가 이미되어 세계 공간으로 조정) 화면의 가장자리를 다음과 같이 정의하고있다 :
는b2BodyDef groundBodyDef;
groundBodyDef.position.Set(0,0);
b2Body* groundBody = globalWorld->CreateBody(&groundBodyDef);
b2PolygonShape groundBox;
b2FixtureDef boxShapeDef;
boxShapeDef.shape = &groundBox;
groundBox.SetAsEdge(b2Vec2(screenRect.p1.x,screenRect.p1.y), b2Vec2(screenRect.p2.x, screenRect.p1.y));
groundBody->CreateFixture(&boxShapeDef);
groundBox.SetAsEdge(b2Vec2(screenRect.p1.x,screenRect.p1.y), b2Vec2(screenRect.p1.x, screenRect.p2.y));
groundBody->CreateFixture(&boxShapeDef);
groundBox.SetAsEdge(b2Vec2(screenRect.p1.x,screenRect.p2.y), b2Vec2(screenRect.p2.x, screenRect.p2.y));
groundBody->CreateFixture(&boxShapeDef);
groundBox.SetAsEdge(b2Vec2(screenRect.p2.x,screenRect.p2.y), b2Vec2(screenRect.p2.x, screenRect.p1.y));
groundBody->CreateFixture(&boxShapeDef);
이의 이상한 부분은 더 나는 먼 정적 동적에서 몸을 전환이다 더 멀리 떨어지면 다시 밀어 넣기 전에 바닥을 통과합니다.
나는 동적 인 것에서부터 정적 인 것까지 제외하고 몸에서 다른 것을 바꾸지 않았다. 시체를 움직여 다시 바닥으로 떨어 뜨리면 동적에서 정적으로 전환되고 다시 바닥으로 떨어지는 정도가 재설정되지만 다시 전환 할수록 다시 생성됩니다.
잘못 작성하는 경우가 아니면 왜 이렇게 바닥에 떨어지는 지 알 수 없습니다. 게임의 다른 모든 것들이 완벽하게 작동합니다.