0

ゲームのメイン キャラクター用のスプライトがある「GameCharacter」クラスがあり、フレームとアニメーションを正しくロードしました。ワンタッチまたはスワイプジェスチャーでアニメーションを切り替えることができます。現在、アニメーション間を回転できます。

私のシーンのタッチ機能には、次のものがあります。

_mychar->RunAnimation(id);

ここで、id はアニメーションの ID で、触れるたびに変化する整数です。

メソッドは次のように機能します。

void GameCharacter::RunAnimation(int a){

    _sprite->stopAllActions();
    if(a<_animation.size() && a>=0){
        _sprite->runAction( CCRepeatForever::create(_animation[a]));
    }
}

_animation[]オブジェクトが保持された単なるベクトルCCAnimate*です (後で GameCharacter を破棄するときにそれらを解放します)。

私は 2 つのアイドル アニメーションを持っています。それらをランダムに切り替えたいです。たとえば、最初のアニメーションを 3 ~ 5 回、2 番目のアニメーションを 1 ~ 2 回「キューに入れ」、このように永遠に繰り返したいです... また、私はしたいですこの「無限のランダム アイドル アニメーション」を中断するには、キャラクターが終了するまで別のアニメーション (たとえば、ジャンプ アニメーション) を実行し、終了するとアイドル アニメーションに到達するようにします。うまく説明できたかどうかわかりませんが、ご理解いただければ幸いです。

アニメーションの ID は次のとおりです。

  • 0-アイドル 1 (3 フレーム)
  • 1-アイドル 2 (6 フレーム)
  • 2ジャンプ(12フレーム)
  • 3歩(12フレーム)

現時点では、キャラクターをそのアイドル状態 (アニメーション 0 と 1 の間のランダムな時間) にできるようにする必要があるだけで、タッチするたびに、ジャンプ アニメーションが 1 回実行され、最後に再びアイドル状態が開始されます...

歩行アニメーションは後で解きます。

前もって感謝します!

4

1 に答える 1

1

このようなロジックscheduleを定期的に実行する方法をお勧めします.-idle

this->schedule(schedule_selector(YourGameClass::idleLogic), FREQUENCY_IN_SECONDS);

メソッドで、idleLogicキャラクターが走ったりジャンプしたりしていないかどうかを確認し、そうであれば、indexアイドル アニメーション配列の乱数を取得して_animation[index]. また、アイドル状態のアニメーションを実行しないように、キャラクターが停止した時間を追跡することもお勧めします。iddleTime >= MIN_IDLE_TIME

それが役に立てば幸い。

于 2013-08-01T16:45:15.900 に答える