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]]];

这只是如何实现动画的一个示例。例如,如果我有一个由几个部分组成的“Boss”,我想用身体不同部位的动画让它变得非常古朴。

有没有比连续替换图像更流畅的动画制作方法?

在计算上,这是你能做的最好的,还是有更有效的技术?

谢谢您的帮助

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 回答