我正试图在游戏中制作曲折。我正在使用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];
怪物之字形只有一次,我怎么能不断地做到这一点?
抱歉我的英语不好。
感谢您的关注。
答案 0 :(得分:0)
[monster runAction:[CCRepeatForever actionWithAction:seq]];
那只会重复你永远创造的序列。那是你想要的吗? 或者你可以使用CCRepeat,如果你想让它只做几次然后停止。
另外,我认为你的英语很好。
答案 1 :(得分:0)
我看到的第一个问题是,即使你得到重复的bezier动作,它每次都会重复相同的贝塞尔曲线。鉴于您正在使用CCBezerTo,它将从精灵开始时的精灵位置移动到贝塞尔配置中的位置。
每次完成时都需要更新贝塞尔曲线配置,以便配置表示从精灵位置(在前一个贝塞尔曲线的末尾)移动到您想要它的zig或zag的位置。
而不是使用CCRepeatForever,我倾向于将CCBlockAction作为序列中的最后一个动作。在该操作中,请回调设置所有内容的例程。
基本上,你正在设置一个递归动作,当它完成时,它会告诉自己重新开始,但是这时精灵处于一个新的位置,所以在视觉上你会得到你想要的。
你当然需要某种控制来让你在某个时刻完成动作。