如何在CCRepeatForever中使用CCBezier?

时间:2013-11-26 00:24:09

标签: cocos2d-iphone

我正试图在游戏中制作曲折。我正在使用CCBezier。

ccBezierConfig bezier;
        bezier.controlPoint_1 = ccp(monster.position.x, actualY);
        bezier.controlPoint_2 = ccp(monster.position.x, actualY+40);
        bezier.endPosition = ccp(monster.position.x,actualY);
        CCBezierTo *bezierAction = [CCBezierTo actionWithDuration:1 bezier:bezier];




        id action = [CCSpawn actions:actionMove,bezierAction,nil];

        id seq = [CCSequence actions:
                  action,
                  actionMoveDone,
                  nil];

        [monster runAction:seq];

怪物之字形只有一次,我怎么能不断地做到这一点?

抱歉我的英语不好。

感谢您的关注。

2 个答案:

答案 0 :(得分:0)

[monster runAction:[CCRepeatForever actionWithAction:seq]];

那只会重复你永远创造的序列。那是你想要的吗? 或者你可以使用CCRepeat,如果你想让它只做几次然后停止。

另外,我认为你的英语很好。

答案 1 :(得分:0)

我看到的第一个问题是,即使你得到重复的bezier动作,它每次都会重复相同的贝塞尔曲线。鉴于您正在使用CCBezerTo,它将从精灵开始时的精灵位置移动到贝塞尔配置中的位置。

每次完成时都需要更新贝塞尔曲线配置,以便配置表示从精灵位置(在前一个贝塞尔曲线的末尾)移动到您想要它的zig或zag的位置。

而不是使用CCRepeatForever,我倾向于将CCBlockAction作为序列中的最后一个动作。在该操作中,请回调设置所有内容的例程。

基本上,你正在设置一个递归动作,当它完成时,它会告诉自己重新开始,但是这时精灵处于一个新的位置,所以在视觉上你会得到你想要的。

你当然需要某种控制来让你在某个时刻完成动作。