スプライトで使用する独自の物理ボディを作成したいと考えています。このスプライトには、衝突面とオープン スペースがある 2 つの部分が必要です。
例:
上記の例では、スプライトは 2 つの緑のスペースが物理を必要とし、茶色の中央が「空」であるか、物理属性を持たない物理 box2d ボディを持つ必要があります。これは可能ですか、それとも 2 つのスプライトを作成する必要がありますか?
はい、可能です。緑のパーツごとに 1 つのボディと 2 つのフィクスチャを作成する必要があります。
b2BodyDef myBodyDef;
myBodyDef.type = b2_dynamicBody;
b2Body* dynamicBody = m_world->CreateBody(&myBodyDef);
b2PolygonShape polygonShape;
b2FixtureDef myFixtureDef;
myFixtureDef.shape = &polygonShape;
// Left green rectangle
b2Vec2 vertices[4];
vertices[0].Set(0, 0);
vertices[1].Set(1, 0);
vertices[2].Set(1, 0.5);
vertices[3].Set(0, 0.5);
polygonShape.Set(vertices, 4);
dynamicBody->CreateFixture(&myFixtureDef);
// Right green rectangle
b2Vec2 vertices[4];
vertices[0].Set(5, 0);
vertices[1].Set(6, 0);
vertices[2].Set(6, 0.5);
vertices[3].Set(5, 0.5);
polygonShape.Set(vertices, 4);
dynamicBody->CreateFixture(&myFixtureDef);