シンプルなゲームでは、キャラクターは約 15 フレームの歩行アニメーションを持っています。加速度計に基づいて、どちらの方向の速度も変化します。それに応じてアニメーションの速度を上げたり下げたりしたかったのです。アニメーションが初期化されると、遅延速度を変更することはできず、代わりに新しいアニメーションを作成する必要があることに気付きました。しかし、速度はほぼ常に変化するため、アニメーションをリセットし続けると、常に同じフレームでスタックしてしまいます。
アニメーションが現在どのフレームにあるかを見つけて停止し、同じフレームで新しいアニメーションを作成しますが、最後のアニメーションが終了した時点から開始する方法はありますか?
そうでなければ、動的に変化するアニメーションの遅延時間をどのように実装することができるかについて、誰か考えがありますか?
編集:
Learn Cocos2d 2 の例から、CCSpeed を使用してこれを実行しようとしました。コードは次のとおりです。
CCRepeatForever *walkLeftRepeat = [CCRepeatForever actionWithAction:[CCAnimation animationWithSpriteFrames:walkLeftFrames]];
self.walkLeft = [CCSpeed actionWithAction:walkLeftRepeat speed:animationWalkingSpeed];
次の警告が表示されます: 'CCRepeatForever *' をタイプ 'CCActionInterval *' のパラメーターに送信する互換性のないポインター タイプ
これが私がフォローしている例です:
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:rotateBy];
CCSpeed* speedAction = [CCSpeed actionWithAction:repeat speed:0.5f];
2番目の編集:
それから私はこれを試しました:
CCAnimation *walkLeftRepeat = [CCAnimation animationWithSpriteFrames:walkLeftFrames];
CCAnimate *temp = [CCAnimate actionWithAnimation:walkLeftRepeat];
CCAnimate*temp2 = [CCRepeatForever actionWithAction:temp];
self.walkLeft = [CCSpeed actionWithAction:temp2 speed:animationWalkingSpeed];
[_guy runAction:_walkLeft];
最終編集。この表示されない問題は、ccanimation に遅延を追加することで修正されました。
これによりエラーは発生しませんが、何も起こりません。ありがとう!