0

私はBox2dの初心者で、自分自身を学んでいます。ここからBox2dを学んでいます

私は体を作りたいと思っており、b2body に角度を付けて、体が斜めの線のように立っているように見えるようにしたいと考えています。

これは私のコードです。

for(int i = 0; i < 4; i++) {

    static int padding=20;

    // Create block and add it to the layer
    CCSprite *block = [CCSprite spriteWithFile:@"slope.png"];
    int xOffset = padding+block.contentSize.width/2+ ((block.contentSize.width+padding)*i);
    block.position = ccp(xOffset, 250);
    block.tag = 2;
    [self addChild:block];

    // Create block body
    b2BodyDef blockBodyDef;
    blockBodyDef.type = b2_staticBody;   //b2_dynamicBody
    blockBodyDef.position.Set(xOffset/PTM_RATIO, 250/PTM_RATIO);
    blockBodyDef.userData = block;
    b2Body *blockBody = _world->CreateBody(&blockBodyDef);

    // Create block shape
    b2PolygonShape blockShape;
    blockShape.SetAsBox(block.contentSize.width/PTM_RATIO/2,
                        block.contentSize.height/PTM_RATIO/2);

    // Create shape definition and add to body
    b2FixtureDef blockShapeDef;
    blockShapeDef.shape = &blockShape;
    blockShapeDef.density = 10.0;
    blockShapeDef.friction = 0.0;
    blockShapeDef.restitution = 0.1f;
    blockBody->CreateFixture(&blockShapeDef);            
}

このコードでは、水平方向に 4 つの b2body を作成しました。今、私はこれらを垂直にして、斜面のように少し歪ませたい.

私はまだこれを行うことができません。

私は体や何かに天使を与えなければならないことを知りません。Box2d のサンプル コードと優れたチュートリアルが見つかりません。

初心者向けの xcode Box2d デモを見つけることができるサイトはありますか? または、プログラムで UIButtons、UILabel、UITextfiled を使用するアプリケーションのようなコードで、このような Box2d コードを見つけることができますか?

このデモでは、4 つの静的スロープ イメージを作成しようとしています。左上隅からボール (b2dynamicbody) を押す必要があります。ボールはこれら 4 つの静止体を通過し、傾斜に応じてボールが回転します。

どんなアイデアや提案も大歓迎です。

4

1 に答える 1

0

サンプルでこのコードを置き換えて、ずさんなボディを取得します

// Create block body
b2BodyDef blockBodyDef;
blockBodyDef.type = b2_staticBody;   //b2_dynamicBody
blockBodyDef.position.Set(200/PTM_RATIO, 250/PTM_RATIO);
blockBodyDef.userData = block;
b2Body *blockBody = _world->CreateBody(&blockBodyDef);

// Create block shape
b2PolygonShape blockShape;

int num = 3;
b2Vec2 verts[] = {
    b2Vec2(-27.5f / PTM_RATIO, -296.6f / PTM_RATIO),
    b2Vec2(-14.3f / PTM_RATIO, -127.2f / PTM_RATIO),
    b2Vec2(-281.0f / PTM_RATIO, -288.4f / PTM_RATIO)
};
blockShape.Set(verts, num);

// Create shape definition and add to body
b2FixtureDef blockShapeDef;
blockShapeDef.shape = &blockShape;
blockShapeDef.density = 10.0;
blockShapeDef.friction = 0.0;
blockShapeDef.restitution = 0.1f;
blockBody->CreateFixture(&blockShapeDef);

ご質問はお気軽にどうぞ。

于 2013-05-09T16:52:31.987 に答える