最近cocos2dxのつたない投稿ばかりになっちゃってますが。
アニメーションを作ろうとccActionをいじることがどんどん多くなってきたんだけど、いろいろとできることが多すぎてとても覚えられないんで、いくつかcocos2d-x2.1.4のリファレンスから引っ張ってきて(ぼくが)使いそうまたは使うかもしれないものをまとめておきます。
とても多いんで、今回は単体のアクションだけです。
CCMoveBy(CCMoveTo)移動アクション
使い方
CCMoveTo::create((float)時間,(CCPoint)場所);
多分一番使いますね(少なくともぼくは)。CCNodeを移動させます。
CCMoveByの場合、現在位置からの相対位置を指定。CCMoveToは絶対位置を指定するみたい。
なお、そのポイントは(指定をしなければ)画像の中心(アンカーポイント)となります。
アンカーポイントはNode::setAncerPoint()で変更できるみたいです。
CCScaleBy(CCScaleTo)拡大/縮小
使い方
CCScaleBy::create((float)時間,(float)拡大率);
アンカーポイントを中心にしてCCNodeの拡大や縮小を行います。これもよく使うかも。同じようにScaleByは現在の大きさからの拡大率、ScaleToはその画像本来の大きさからの拡大率、みたい。
CCJumpBy(CCJumpTo)ピョンピョン跳ねるよ
使い方
CCJumpBy::create((float)時間,(CCPoint)着地地点,(int)ジャンプ幅,(int)回数)
CCNodeをぴょんぴょん飛び跳ねさせます。1回だけならジャンプですね。
これもJumpByは現在地からの相対位置となります。
CCRotateBy(CCRotateTo)回転
使い方
CCRotateBy::create((float)時間,(float)角度);
アンカーポイントを中心にCCNodeを回転させます。
ちなみに、CCRotateByは時計回りに回り、RotateToは最短の方向で回るみたい。
(RotateToの場合、300度で指定したら実質-60度回転します)
CCTintBy(CCTintTo)色合いの変更
使い方
CCTintTo::create((float)時間,(GLshort)赤,(GLshort)緑,(GLshort)青);
時間をかけて色合いを変更してくれる。ただ、ぼくの使い方が悪いのかもしれないけどCCTintByだと最初にポンと色がかわって、その後元に戻っていくというような動きをする。そういうものなのかな?
CCTintToだとうまくいきました。
GLshortって要は0〜255までの数字を入力してあげたらいいみたい。
たとえば、
CCTintTo::create(1.0f , 255 , 0 , 0);
って指定をすると、1秒かけてこんな感じに画像が変化します。
あー死んじゃったみたいな感じですね。
CCSkewBy(CCSkewTo)画像を傾ける
使い方
CCSkewBy::create((float)時間,(float)Xの傾き,(float)Yの傾き);
こんな感じに傾けます。これもアンカーポイントを中心に傾くみたいです。
ちなみにCCSkewToの場合、画像本来の状態(傾き0の状態)からの指定となり、CCSkewByは現時点での状態からの指定となります。だから最初はSkewByもSkewToも結果はかわらないみたい。何度もやればSkewToはかわらないけど、SkewByはどんどん傾いていきます。
CCBlink 点滅
使い方
CCBlink::create((float)時間,(int)点滅回数)
点滅してくれます。ただ、そのまま使うと非常に画面がちらついてグチャグチャグチャってなっちゃいます。
そういう場合、以下のように指定するといいみたいです。
<br />CCDirector::sharedDirector()-&gt;setDepthTest(false);<br />
これでぐちゃぐちゃってならなくなります。
CCFadeIn(CCFadeOut)フェードイン/フェードアウト
使い方
CCFadeIn((float)時間)
フェードイン/フェードアウトを行います。ただ、ちゃんとフェードインさせたい場合、最初にそのスプライトのsetOpacityを0とかにしておかないとちゃんと隠れられてないようなちょっとかっこわるい感じになってしまいます。
sprite->setOpacity(0);
を前に書くだけでOK。
あと、CCFadeOutをしたら対象は見えなくなるけど、なくなったわけじゃないのでその後使わないという場合はremoveさせないとアレになるみたい。
CCBezierBy(CCBezierTo)ベジェ曲線での移動
使い方
CCBezierBy::create((float)時間,(ccBezierConfig)移動曲線);
ベジェ曲線に沿って移動させることができます。
これもByとToの違いは絶対位置と相対位置です。
詳しい使い方はこんな感じ。
ccBezierConfig config; config.controlPoint_1 = ccp(0 , 0); //開始位置 config.controlPoint_2 = ccp(0 , -100); //曲線のベクトル(というのかな?) config.endPosition = ccp(100,100); //終了位置 pSprite->runAction(CCBezierBy::create(1.0f , config));
ちなみにCCBezierToの場合、controlPoint_1も現在の開始位置からのベクトルの指定みたいな感じになります。どういえばいいのかわからないけど。
CCWaves 波立たせる
使い方
CCWaves::create(
(float)時間,
(CCSize)グリッドサイズ,
(int)波の回数,
(float)振動数?,
(bool)水平,
(bool)垂直);
一番最初のもこれだけど、正直いまいちリファレンスよくわからない(´・ω・`)波って。。
多分時間内に何回波立たせるか、かなぁ?
グリッドサイズは多分CCWavesが波立たせる時に使用するグリッドの大きさなんだろうな。うん、そのまんまですね。
使うとこんな感じに波立ちます。旗なんかに使えそう。
ちなみにこれは、水平をtrueにし、垂直をfalseにしてます。
あとはグリッドサイズや波や周波数か何かとかいじると振動がかわりますよと。適当でごめんなさい。
CCWaves3D 3次元的に波立たせる
使い方
CCWaves3D::create(
(float)時間,
(CCSize)グリッドサイズ,
(int)揺れる回数,
(float)振幅);
こっちの方が使いやすそう。3次元的に旗みたいにゆれます。
CCTwirl 振り回す(というかひねる)
使い方
CCTwirl::create(
(float)時間,
(CCSize)グリッドサイズ,
(CCPoint)中心位置,
(int)ひねる回数,
(float)振幅);
画像をひねります。CCPointに指をおいて、柔らかいものをぐにゃりとまわす感じ。
この後もとに戻ります。いまいち使い道が思い浮かばないけど、きっと何かに使うこともあるかもしれませんね。
CCLiquid 液体化
使い方
CCLiquid::create(
(float)時間,
(CCSize)グリッドサイズ,
(int)揺れる回数,
(float)振幅);
画像じゃわかりづらいけど、ゆらゆらっととても酔いそうな動きします。
プールの水面みたいな感じです。
CCPlace 瞬間移動
使い方
CCPlace::create((ccPoint)移動地点);
ぴゅんって瞬間移動します。他のと組み合わせないと使う必要ないですね。
CCDelayTime 待機
使い方
CCDelayTime::create((float)時間);
指定した時間待機させます。これも他のと組み合わせて効果を発揮する子です。
CCShow(CCHide) 表示/非表示
使い方
CCShow();
パッと表示させたりします。
まだまだたくさんあるんだけど、とりあえずまた次の機会があれば投稿します。
ピンバック: cocos2d-xのアクションまとめその2 | たそがれブランチ
ピンバック: cocos2d-xのアクションまとめその3 | たそがれブランチ
ピンバック: ゲームプログラミングと流しそうめんの共通点について | たそがれブランチ