いぬでもわかる

iOSやCocos2dxが好きでときどきAndroid。できるだけ毎日何かしら書く事を目標に頑張る。

cocos2d-xでの単一アクション

cocos2d-xでは、CCActionクラスを使う事でCCNodeが持っているpositionやscale、rotationといったプロパティを、時間とともに変化させ簡単にアニメーションを作ることができます。
CCActionクラスは、createというstaticなメソッドを持っており、第1引数にはアニメーション時間をとります。
CCActionクラスを継承したアクションクラスは多くあり、リファレンスから確認できます。
以下にいくつかアクションクラスをあげます。

CCMoveTo(float duration, const CCPoint &position)
指定時間をかけて指定したpositionに移動する

//x:100、y:50に1秒かけて移動する。
CCAction* action = CCMoveBy::create(1.0f, ccp(100, 50));
sprite->runAction(action);

CCMoveBy(float duration, const CCPoint &deltaPosition)
CCMoveToとは異なり、指定時間をかけて指定したposition分移動

//現在位置から横方向に100、縦方向に50移動する。
CCAction* action = CCMoveBy::create(1.0f, ccp(100, 50));
sprite->runAction(action);

CCScaleTo(float duration, float s)
指定時間をかけて指定倍率まで拡大/縮小

//1秒掛けて2倍に拡大表示
CCAction* action = CCScaleBy::create(1, 2);
sprite->runAction(action);

CCRotateBy::create(float fDuration, float fDeltaAngle)
指定時間をかけて指定角度傾ける

//1秒かけて現在の角度から90度傾ける
CCAction* action = CCRotateBy::create(1, 90);
sprite->runAction(action);

CCRotateTo::create(float fDuration, float fDeltaAngle)
指定時間をかけて指定角度まで傾ける

//1秒かけて指定角度まで傾ける
CCAction* action = CCRotateTo::create(1, 90);
sprite->runAction(action);

Actionクラスはこの他にもありますので用途に合わせて利用してください。
また、見て分かるように、〜Toクラスは指定の値まで変化させ、〜Byクラスは指定の値分相対的に変化させます。