Memorandum

自分へのメモ。そして誰かの役に立てば、うれしい。

cocos2d-xでゲームを作ろう! 第三回 キャラクタ表示編

画像を準備しよう

さて、今回はキャラクターの表示を行ってみたいと思います。キャラクターの表示の方法は色々あるみたいですが、今回は一枚のテクスチャに上下左右に歩きのパターンが描かれた以下のテクスチャを使ってみようと思います。ちなみにこれは同僚のサイトから拝借しました。
f:id:Keizi:20130908121317p:plain
おそらくプロパティリストとか用意して、切り出し座標をそちらで管理してってやり方がスマートだと思いますが、今回はゴリゴリごりごりやってしまおうと思います。

cocos2d-xには、テクスチャ内の矩形を指定して、スプライトして切り出してくれる便利な機能があります。今回はこれを利用します。それではまず、キャラクタの表示から。この画像のキャラクタは、以下のように「幅96、高さ64のサイズで格納されています。
f:id:Keizi:20130908123117p:plain

テクスチャからスプライトを切り出そう

まずは、切り出したスプライトを格納する領域を準備します。
あと、スプライトの幅と高さ定数も用意しておきます。
今回のコードは、前回のマップ表示の下に追加してください。

    // キャラクタ表示
    CCSprite* pSpritesCharacter[12]; // スプライトの数
    const int WIDTH_SIZE  = 96;      // 一つのスプライトの幅
    const int HEIGHT_SIZE = 64;      // 一つのスプライトの高さ


先ほど作成した領域にテクスチャを切り出して格納していきます。

    //「character.png」からスプライトへの切り出し
    int i=0;
    for (int y=0;y<4; y++) {
        for (int x=0;x<3; x++) {
            CCRect rect(float(x * WIDTH_SIZE),  // X座標
                        float(y * HEIGHT_SIZE), // Y座標
                        float(WIDTH_SIZE),      // 幅
                        float(HEIGHT_SIZE));    // 高さ
            pSpritesCharacter[i++] = CCSprite::create("character.png", rect);
        }
    }

切り出したスプライトを表示しよう

格納したスプライトに対して、座標を設定しシーンに追加します。
これで、切り出したスプライトが表示されるようになります。

    // 座標を確定して、シーンに追加
    for (int i=0; i<12; i++)
    {
        int x = 50;
        int y = 50;
        pSpritesCharacter[i]->setPosition(ccp(x + (i * 50), y + (i * 50)));
        this->addChild(pSpritesCharacter[i]);
    }


実行させるとこんな感じになります。
f:id:Keizi:20130908130946p:plain

これで、テクスチャからスプライトを作成することができました。
次回は、このスプライトをアニメーションさせてみたいと思います。