Lab

Cocos2d-x v3:回転のアニメーション

 Tag :  Published : 2014-6-9

Pocket

RotateTo、RotateByを使用します。
スプライトが回転するアニメーションを作ります。
> Ver2.x : 『回転のアニメーション』はこちら

回転のアニメーション – 絶対値/縦横同じ角度(RotateTo)

画面中央のスプライトが、1秒かけて45度回転します。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //アニメーションを作成 RotateTo::create(時間, 回転角度);
    auto action = RotateTo::create(1, 45);
    
    //アニメーション開始
    sprite->runAction(action);
    

回転のアニメーション – 絶対値/縦横異なる角度(RotateTo)

画面中央のスプライトが、1秒かけてX方向に45度、Y方向に10度回転します。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //アニメーションを作成 RotateTo::create(時間, X方向角度, Y方向角度);
    auto action = RotateTo::create(1, 45, 10);
    
    //アニメーション開始
    sprite->runAction(action);
    

回転のアニメーション – 相対値/縦横同じ角度(RotateBy)

30度傾いている画面中央のスプライトが、1秒かけて45度します。
RotateToとの違いは、現在の角度から何度回転させるか、と指定する点です。
30度+45度=75度になります。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //30度回転
    sprite->setRotation(30);
    
    //アニメーションを作成 RotateBy::create(時間, 回転角度);
    auto action = RotateBy::create(1, 45);
    
    //アニメーション開始
    sprite->runAction(action);
    

回転のアニメーション – 相対値/縦横異なる角度(RotateBy)

30度傾いている画面中央のスプライトが、1秒かけてX方向に45度、Y方向に60度回転します。
RotateToとの違いは、現在の角度から何度回転させるか、と指定する点です。
X方向は30度+45度=75度、Y方向は30度+60度=90度になります。

    //スプライトを作成
    Size visibleSize = Director::getInstance()->getVisibleSize();
    auto sprite = Sprite::create("1.png");
    sprite->setPosition(Vec2(visibleSize.width/2, visibleSize.height/2));
    addChild(sprite);
    
    //30度回転
    sprite->setRotation(30);
    
    //アニメーションを作成 RotateBy::create(時間, X方向角度, Y方向角度);
    auto action = RotateBy::create(1, 45, 60);
    
    //アニメーション開始
    sprite->runAction(action);
    

pageTop