Cocos2d iphone 如何在CCR中使用CCBezier?

Cocos2d iphone 如何在CCR中使用CCBezier?,cocos2d-iphone,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);

我正试图在比赛中曲折前进。我用的是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];
怪兽之字形只有一次,我怎么能一直这么做

对不起,我的英语不好


感谢您的关注。

[monster runAction:[CCRepeatForever Action WithAction:seq]]

这将永远重复你创建的序列。这就是你想要的吗?
或者,您可以使用CCRepeat,如果您希望它只执行几次操作,然后停止


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

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

您需要在每次完成时更新bezier配置,以便该配置表示从精灵位置(在上一个bezier的末尾)到您希望它曲折移动的位置的移动

我倾向于将CCBlockAction作为序列中的最后一个操作,而不是永远使用CCRepeatForever。在这个动作中,调用设置一切的例程

本质上,您正在设置一个递归操作,当它完成时,它会告诉自己重新开始,但此时精灵处于一个新的位置,因此在视觉上您将得到您想要的


当然,您需要某种控制才能使操作在某个时刻完成。

在提问之前,我尝试了这个答案,但它只起了一次作用。