这是我为插入场景中的敌人创建动画的实现。
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”,我想在身体的不同部位制作非常古怪的动画。
有没有办法比连续替换图像更顺畅地创建动画?
计算上,这是你能做的最好的,还是有更高效的技术?
感谢您的帮助
答案 0 :(得分:1)
一个接一个地加载多个图像是在cocos2d中“动画”的唯一方法。当然,对于可以在数学上定义的各种效果,您可以使用框架内提供的函数(如旋转,调整大小,移动或基于物理的动画,如下降或弹跳)
如果你的艺术家提供了一个带有流动的逐帧动画的干净精灵表,你会对动画的外观平滑感到惊讶。
答案 1 :(得分: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];