我正在做一个游戏,我希望敌人绕圈移动,但敌人也应向左持续移动。我试图用CGPath创建一个圆形路径,并使其遵循该路径,然后添加了一个恒定向左移动的SKAction。但是似乎该节点只是跟随CGPath而没有向左移动。

还有其他方法可以做到这一点吗?

这是我目前的代码:

CGMutablePathRef circle = CGPathCreateMutable();
CGPathAddArc(circle, NULL, 0, 0, 80, 0, 2*M_PI, true);
CGPathCloseSubpath(circle);

SKAction *followTrack = [SKAction followPath:circle asOffset:NO orientToPath:NO duration:1.5];

SKAction *forever = [SKAction repeatActionForever:followTrack];
[enemy runAction:[SKAction moveByX:-1000 y:0 duration:3.0]];
[enemy runAction:forever];

最佳答案

您不能通过2个移动动作来移动同一节点。您可以将节点放置在容器节点中。然后将容器节点向左移动,同时使其子级移动一圈。

另一种选择是不使用SKAction,而是通过手动计算向心速度并随着时间推移移动向心点来使用更动态和实时的内容。您可以在我的答案here中看到一个示例。

关于ios - SKSpriteNode遵循CGPath并添加SKAction,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31479096/

10-12 05:51