当sprite到达路径的末尾时,如何从SpriteKit重复操作获得回调?

San*_*aus 4 ios sprite-kit skaction skspritenode

SKAction以这种方式创造了我:

unicornAction = [SKAction followPath:mypath asOffset:NO orientToPath:YES duration:0.1];
Run Code Online (Sandbox Code Playgroud)

并将其添加到我的SKSprite:

[sprite runAction:[SKAction repeatActionForever:unicornAction] withKey:@"move"];
Run Code Online (Sandbox Code Playgroud)

我这样做是为了让我可以在精灵运动中随时调整速度.

当我的精灵到达路径的末尾时,我需要一个回调,以便我可以删除精灵.我怎么能得到这样的回调?

另外,有没有更好的方法来使用SKAction我想要做的事情,同时允许我在动作运行期间的任何地方改变速度?

Lea*_*s2D 9

您可以在末尾使用带有runBlock或performSelector的序列:

SKAction* sequence = [SKAction sequence:@[unicornAction, [SKAction runBlock:^{
    // code at end of path goes here...
}]];
Run Code Online (Sandbox Code Playgroud)

你也可以使用

[sprite runAction:sequence withKey:@"follow path"];
Run Code Online (Sandbox Code Playgroud)

然后按键获取动作:

SKAction* sequence = [sprite actionForKey:@"follow path"];
Run Code Online (Sandbox Code Playgroud)