0

これは、シーンに挿入される敵へのアニメーションを作成するための私の実装です。

CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];    
CCAnimation *animation = [CCAnimation animation];
[animation addSpriteFrame:[cache spriteFrameByName:@"enemy_1.png"]];
[animation addSpriteFrame:[cache spriteFrameByName:@"enemy_2.png"]];
animation.delayPerUnit = 0.1;
[_enemy runAction:
 [CCRepeatForever actionWithAction:
  [CCAnimate actionWithAnimation:animation]]];

これは、アニメーションを実現する方法のほんの一例です。たとえば、いくつかのパーツで構成された「ボス」がある場合、体のさまざまな部分のアニメーションで非常に趣のあるものにしたいと考えています。

画像を連続して入れ替えるよりも滑らかなアニメーションを作成する方法はありますか?

計算上、これが最善の方法ですか、それとももっと効率的な手法はありますか?

助けてくれてありがとう

4

2 に答える 2

1

cocos2d 内で「アニメーション化」する唯一の方法は、複数の画像を次々にロードすることです。もちろん、数学的に定義できるさまざまな効果については、フレームワーク内で提供される関数を使用できます (回転、サイズ変更、移動、落下や跳ね返りなどの物理ベースのアニメーションなど)。

アーティストが滑らかなフレームごとのアニメーションを含むきれいなスプライト シートを提供した場合、アニメーションがどれほど滑らかに見えるかに驚かれることでしょう。

于 2013-05-28T21:16:13.280 に答える
1
//if you are using spritesheet then use this...for loading or sprites in your game...

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"walkcycle.plist"] ;
CCSpriteBatchNode *spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"walkcycle.png"];
[heroWorldLayer addChild:spriteSheet];

NSMutableArray *enemyFrames = [NSMutableArray array];
for(int i = 1; i <= 11; ++i) {
    CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"Run_Anim00%02d.png", i]];
    [enemyFrames addObject:frame];
}
id enemyAnim = [CCAnimation animationWithFrames:enemyFrames delay:1.0/22.0];
id enemyAnimate = [CCAnimate actionWithAnimation:enemyAnim restoreOriginalFrame:NO];

 id _runAction = [CCRepeatForever actionWithAction:enemyAnimate];
[_enemy runAction:_runAction];
于 2013-05-29T08:07:55.763 に答える