Lab

Cocos2d-x:アンカーポイントの設定

 Tag :  Published : 2013-12-20

Pocket

setAnchorPointを使用します。
スプライトのアンカーポイント(基準位置)を変更します。
> Ver3.x : 『アンカーポイントの設定』はこちら

スプライトのアンカーポイントを変更(setAnchorPoint)

変更前の状態がこちらです。
デフォルトでは、アンカーポイントは中心に設定されています。(比較用に、黄色の点線を追加してあります。)

cocos2d-x アンカーポイント変更前
    //スプライトを作成
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCSprite* pImg = CCSprite::create("1.png");
    pImg->setPosition(ccp(size.width/2, size.height/2));
    this->addChild(pImg);
    

スプライトのアンカーポイントをX:0、Y:0(スプライトの左下)に変更します。

cocos2d-x アンカーポイント変更後
    //スプライトを作成
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCSprite* pImg = CCSprite::create("1.png");
    pImg->setPosition(ccp(size.width/2, size.height/2));

    //アンカーポイントをゼロに変更。CCPointZeroはccp(0,0)と同様
    pImg->setAnchorPoint(CCPointZero);
    this->addChild(pImg);
    

スプライトのアンカーポイントを変更後、拡大してみる

まずは変更なしで拡大した場合。(比較用に、黄色の点線を追加してあります。)

cocos2d-x アンカーポイント変更前
    //スプライトを作成
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCSprite* pImg = CCSprite::create("1.png");
    pImg->setPosition(ccp(size.width/2, size.height/2));

    //2倍に拡大
    pImg->setScale(2);
    this->addChild(pImg);
    

アンカーポイントを変更後、拡大した場合。

cocos2d-x アンカーポイント変更前
    //スプライトを作成
    CCSize size = CCDirector::sharedDirector()->getWinSize();
    CCSprite* pImg = CCSprite::create("1.png");
    pImg->setPosition(ccp(size.width/2, size.height/2));

    //2倍に拡大
    pImg->setScale(2);
   
    //アンカーポイントをゼロに変更。CCPointZeroはccp(0,0)と同様
    pImg->setAnchorPoint(CCPointZero);
    this->addChild(pImg);
    

pageTop