2012-01-19 9 views
6

Czy w Cocos2d można utworzyć animację ruchu, która będzie przebiegać pod określoną ścieżką?Animacja przeniesienia Cocos2d na ścieżce

Na przykład, jak powinienem zrobić, jeśli potrzebuję obiektu do poruszania się po łuku lub pełnym okręgu?

Pozdrawiam!

Odpowiedz

9

Oczywiście można to zrobić przy użyciu:

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

można użyć ccBezier przenieść dowolny węzeł na łukach:

Teraz Animacja część:

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

referencyjne odnośniki: http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d

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