2012-01-19 16 views
6

E 'possibile in Cocos2d creare un'animazione di movimento che vada su un percorso specifico?Cocos2d sposta l'animazione su un percorso

Ad esempio, come devo fare se ho bisogno che un oggetto si muova su un arco o su un cerchio completo?

Saluti!

risposta

9

Certo si può fare questo usando:

ccBezierConfig bezier; 
    bezier.controlPoint_1 = ccp(320,0); // control point 1 
    bezier.controlPoint_2 =ccp(0,0); // control point 2 
    bezier.endPosition = ccp(endPoint.x,endPoint.y) ; 
    id bezierForward = [CCBezierTo actionWithDuration:3 bezier:bezier]; 
    [ball runAction:bezierForward]; 

è possibile utilizzare ccBezier per spostare qualsiasi nodo curve:

Ora Animazione Parte:

[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"eggAnimation.plist"];   
    spriteSheet = [CCSpriteBatchNode batchNodeWithFile:@"eggAnimation.png"]; 
    [gameBackgroundLayer addChild:spriteSheet]; 
    eggAnimFrames = [NSMutableArray array]; 
    for (int i = 1; i <= 10; i++) 
    { 
     [eggAnimFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:[NSString stringWithFormat:@"%d.png", i]]]; 
    } 
    rotateAnim = [CCAnimation animationWithFrames:eggAnimFrames delay:0.05f]; 
    ball = [CCSprite spriteWithSpriteFrameName:@"1.png"]; 
    ball.position=ccp(160,80); 
    rotateAction =[CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:rotateAnim restoreOriginalFrame:YES]]; 
    [spriteSheet addChild:ball]; 

Collegamenti di riferimento: http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d

http://www.math.ubc.ca/~cass/gfx/bezier.html