2012-01-19 75 views
6

Cocos2d可以创建一个移动动画,该动画将在特定路径上进行吗?Cocos2d在路径上移动动画

例如,如果我需要一个对象在弧形或整圆上移动,该怎么办?

问候!

回答

9

当然,你可以使用这样做:

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

可以使用ccBezier移动任何节点曲线:

现在动画部分:

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

参考链接:http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d

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