libro
www.tuyano.com
初心者のためのCocos2d-xゲームプログラミング入門

スプライトを使おう (2/4)

作成:2015-06-06 09:11
更新:2015-06-06 09:11

■Cocos2d::Spriteクラスの基本

では、実際にスプライトを利用してみましょう。スプライトを使うには、最低限覚えておきたい機能がいくつかあります。まずはそれらについてまとめておきましょう。

●インスタンスの作成
auto 変数 = Sprite::create( ファイル名 );
Spriteインスタンスの作成は、createメソッドを利用します。引数には、ファイル名を指定します。これで、「Resources」フォルダ内から指定の名前のファイルを探し、それを読み込んでインスタンスを作成します。「Resources」フォルダ内に更にフォルダ分けをして整理してあるような場合は、Resources内の相対パスを記述すればよいでしょう。例えば、「res」フォルダを作ってその中にしまってあるなら、"res/character.png"とするわけです。

●アンカーポイントの設定
《Sprite》->setAnchorPoint(《Vec2》);
アンカーポイントは、前回Labelで説明しました。ウィジェットの中心地点となるものを設定するためのメソッドでしたね。これはVec2を使って縦横の位置を設定します。値は、0~1の実数で指定します。

●位置の設定
《Sprite》->setPosition( 横 , 縦 );
《Sprite》->setPosition(《Vec2》);
これは、既にLabelでもやりましたね。表示位置の設定は、setPositionを使います。引数には、2つの位置の値(横方向と縦方向)をそれぞれ引数に指定するか、あるいはベクターデータをまとめて扱うVec2を利用します。

●大きさの設定
《Sprite》->setScale( float値 );
《Sprite》->setScaleX( float値 );
《Sprite》->setScaleY( float値 );
位置だけでなく、大きさを設定することもできます。通常、スプライトはロードしたイメージを等倍(倍率1.0)で表示しています。これを変更して、拡大縮小するのがこのメソッドです。setScaleは、縦横を同じ比率で拡大縮小します。横方向だけならsetScaleX、縦方向ならsetScaleYを利用できます。いずれも、倍率で設定します。例えば縦横2倍の大きさにしたければ、setScale(2.0)というようにします。

●回転角度の設定
《Sprite》->setRotation( float値 );
スプライトは、表示するイメージを好きな角度に回転することができます。setRotationは、回転する角度を指定するだけでそのイメージの向きを変えることができます。例えば、setRotation(90.0)なら、イメージを右回りに90度回転します。

では、下に簡単な利用例を挙げておきましょう。character.pngを読み込み、2倍の大きさで90度回転させた状態で表示します。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

#pragma execution_character_set("utf-8")

#include "HelloWorldScene.h"

USING_NS_CC;

Scene* HelloWorld::createScene()
{
    auto scene = Scene::create();
    auto layer = HelloWorld::create();
    scene->addChild(layer);
    return scene;
}

bool HelloWorld::init()
{
    if (!Layer::init())
    {
        return false;
    }
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    Director::getInstance()->setDisplayStats(false); // stats OFF

    auto sprite = Sprite::create("character.png");
    sprite->setAnchorPoint(Vec2(0.5, 0.5));
    sprite->setPosition(Vec2(origin.x + 100, 
        origin.y + visibleSize.height / 2));
    sprite->setScale(2.0);
    sprite->setRotation(90.0);
    this->addChild(sprite, 1);

    return true;
}

※関連コンテンツ

「初心者のためのCocos2d-xゲームプログラミング入門」に戻る