Box2d をやってみる… チュートリアル2 (10) ブロックの作成

Adding a game over scene
… おっゲームオーバーへ画面遷移するのね。なんだかクライマックスへ一気に加速ですね。

チュートリアルにあるようにゲームオーバー(CCLayerColorを継承)を用意して、画面遷移後3秒後にまたゲーム画面に戻ってくる仕様を実装しました。

 

Adding some blocks

とりあえず、ブロックを4個置く実装。この辺はやっと慣れてきたかなー… ^^;

    //ブロック
    {
        for (int i = 0; i < 4; i++)
        {
            CCSprite * sprite = NULL;
            {
                sprite = CCSprite::create("block.png");

                CCPoint pos = CCPointZero;
                {
                    static int padding = 20;

                    const CCSize size = sprite->getContentSize();

                    int xOffset = padding + (size.width * 0.5f);
                    xOffset += (padding + size.width) * i;

                    pos = ccp(xOffset, visibleSize.height - (size.height * 0.5f + 10.0f));
                }

                sprite->setPosition(pos);

                sprite->setTag(2);
                this->addChild(sprite);
            }

            b2Body * body = NULL;
            {
                b2Vec2 vecPos;
                {
                    CCPoint pos = sprite->getPosition();
                    pos = ccpMult(pos, 1.0f / PTM_RATIO);
                    vecPos = b2Vec2(pos.x, pos.y);
                }

                b2BodyDef bodyDef;
                bodyDef.type = b2_dynamicBody;
                bodyDef.position.Set(vecPos.x, vecPos.y);
                bodyDef.userData = sprite;

                body = _world->CreateBody(&bodyDef);
            }

            if (body)
            {
                b2PolygonShape shape;
                {
                    b2Vec2 vecSize;
                    {
                        CCSize size = sprite->getContentSize();

                        //半径
                        vecSize = b2Vec2((size.width  * 0.5f) / PTM_RATIO,
                                         (size.height * 0.5f) / PTM_RATIO);
                    }
                    shape.SetAsBox(vecSize.x, vecSize.y);
                }

                b2FixtureDef fixtureDef;
                {
                    fixtureDef.shape = &shape;
                    fixtureDef.density = 10.0f;
                    fixtureDef.friction = 0.0f;
                    fixtureDef.restitution = 0.1f;
                }

                body->CreateFixture(&fixtureDef);
            }
        }
    }

…おっと時間が…続きは後で… ^^;


Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です