0

以下のコードを使用して、多角形のスプライトを生成しようとしています。コードに問題が発生していますが、誰かがコードの問題を見つけることができますか?

   b2BodyDef woodBodyDef;
     woodBodyDef.position.Set(400/PTM_RATIO,100/PTM_RATIO);
     woodBodyDef.type = b2_dynamicBody;
     woodBodyDef.userData = _wood;
     _body = _world->CreateBody(&woodBodyDef);

     b2PolygonShape woodShape;

     int num = 4;
     b2Vec2 vertices[] = {
     b2Vec2(-137.0f/PTM_RATIO,-32.5f/PTM_RATIO),
     b2Vec2(-137.0f /PTM_RATIO,36.5f/PTM_RATIO),
     b2Vec2(137.0f /PTM_RATIO,36.5f/PTM_RATIO),
     b2Vec2(136.0f /PTM_RATIO, -32.5f/PTM_RATIO)
     };
     woodShape.Set(vertices, num);



     b2FixtureDef woodShapeDef;
     woodShapeDef.shape = &woodShape;
     woodShapeDef.density = 1.0f;
     woodShapeDef.friction = 1.0f;
     woodShapeDef.restitution = 0.5f;
     woodBodyDef.userData = _wood;
     _body = _world->CreateBody(&woodBodyDef);
4

1 に答える 1

0

私の最善の推測は、頂点の順序が重要であるということです。それらを時計回りの順序で定義すると、Box2Dはそれらが反時計回りの順序であると想定する場合があります。確認するのは簡単なので、試してみて、アサートが修正されるかどうかを確認してください(ところで、ポリゴン領域は<= 0であると言われています)。

于 2013-02-04T21:10:32.927 に答える