2013-05-28 41 views
0

這是我的實現,爲插入到場景中的敵人創建動畫。如何在Cocos2D中創建出色的角色動畫?

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」,我想使它在身體不同部位的動畫非常古怪。

有沒有一種方法可以創建比連續替換圖像更平滑的動畫?

從計算角度來看,這是你能做的最好的,還是有更高效的技術?

感謝您的幫助

+1

定義 「平滑」 – Kreiri

+3

只有2幀?使用更多的幀可以使動畫更流暢,同時也可以調整delayPerUnit:P – Guru

+0

當然,添加圖像,我會得到更流暢的動畫:)我的問題是關於可以製作動畫的技巧。例如,如果我有一個由多個部分組成的「Boss」,我想使它在身體不同部位的動畫非常古怪。 – andreapavan

回答

1

加載多張圖片,一個又一個的是cocos2d的範圍內「有生命」的唯一途徑。當然,對於可以通過數學方式定義的各種效果,您可以使用框架內提供的功能(如旋轉,調整大小,移動或基於物理的動畫,例如下降或彈跳)

如果您的藝術家提供帶有流體的乾淨的spritesheet逐幀動畫你會驚訝你的動畫看起來多麼流暢。

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