2011-12-15 8 views
1

コード:Cocos2d + Box2d:VertexHelperでクラッシュフリーの頂点生成を行うには?

b2PolygonShape polyShapeDef; 
int num = 19; 
b2Vec2 verts[] = { 
    b2Vec2(-6.5f/PTM_RATIO, -29.5f/PTM_RATIO), 
    b2Vec2(-31.5f/PTM_RATIO, 3.5f/PTM_RATIO), 
    b2Vec2(-31.5f/PTM_RATIO, 5.5f/PTM_RATIO), 
    b2Vec2(-30.5f/PTM_RATIO, 9.5f/PTM_RATIO), 
    b2Vec2(-27.5f/PTM_RATIO, 15.5f/PTM_RATIO), 
    b2Vec2(-20.5f/PTM_RATIO, 22.5f/PTM_RATIO), 
    b2Vec2(-17.5f/PTM_RATIO, 24.5f/PTM_RATIO), 
    b2Vec2(-13.5f/PTM_RATIO, 26.5f/PTM_RATIO), 
    b2Vec2(-10.5f/PTM_RATIO, 27.5f/PTM_RATIO), 
    b2Vec2(-5.5f/PTM_RATIO, 28.5f/PTM_RATIO), 
    b2Vec2(3.5f/PTM_RATIO, 28.5f/PTM_RATIO), 
    b2Vec2(8.5f/PTM_RATIO, 27.5f/PTM_RATIO), 
    b2Vec2(11.5f/PTM_RATIO, 26.5f/PTM_RATIO), 
    b2Vec2(17.5f/PTM_RATIO, 23.5f/PTM_RATIO), 
    b2Vec2(25.5f/PTM_RATIO, 15.5f/PTM_RATIO), 
    b2Vec2(28.5f/PTM_RATIO, 9.5f/PTM_RATIO), 
    b2Vec2(29.5f/PTM_RATIO, 6.5f/PTM_RATIO), 
    b2Vec2(29.5f/PTM_RATIO, 2.5f/PTM_RATIO), 
    b2Vec2(2.5f/PTM_RATIO, -29.5f/PTM_RATIO) 
}; 

polyShapeDef.Set(verts,num); 
polyShapeDef.m_vertexCount = num ; 

b2BodyDef polyBodyDef; 
polyBodyDef.type = b2_dynamicBody; 
polyBodyDef.userData = inSprite; 
polyBodyDef.position.Set(inSprite.position.x/PTM_RATIO, inSprite.position.y/PTM_RATIO); 
b2Body *parachutBody = world->CreateBody(&polyBodyDef); 

b2FixtureDef polyFixtureDef; // Define the fixture 
polyFixtureDef.shape = &polyShapeDef; 
polyFixtureDef.density = 20.0f; 
polyFixtureDef.friction = 0.9f; 

parachutBody->CreateFixture(&polyFixtureDef); 

//頂点上記のリストは、 'VertexHelper' によって生成されます。コードに何か間違っていますか?クラッシュを取得。..

polyShapeDef.Set(verts,num); 

のようなメソッドのためにサポートされていBOX2D頂点の最大数があります

+0

詳細をお知らせください。どのようにクラッシュするのですか(エラーメッセージ)、スタックトレースがありますか?あなたは問題を隔離しようとしましたか?そうでない場合は、できるだけコードを小さくしてください(また、私たちが手助けしやすくなります)。 – csl

答えて

3

この番号はb2_maxPolygonVerticesであると私はデフォルトでは8つの頂点にポリゴン形状の頂点の数を制限します信じています。 BOX2Dだけ多角形のための8つの頂点を可能にする理由:(パフォーマンス最も可能性が高い)

あなたはその数を増やすかもしれませんが

は、正当な理由はおそらくありますことを心に留めておきます。追加の頂点ごとに実行時間が2倍になる指数関数に非常によく影響する可能性があります。

よりよい解決策は、頂点の数を減らすために、または身体の衝突面積を補うために身体に二つ以上の図形を添付することです。

+0

ありがとうございます。今私は頂点数を減らし、うまく動作します。 – Guru

関連する問題