ios sprite-kit skaction skspritenode

ios - ¿Cómo obtengo una devolución de llamada de una acción repetitiva de SpriteKit cuando el sprite llega al final de una ruta?



sprite-kit skaction (2)

Crea un segundo runBlock: acción que hace lo que quieras que haga cuando la acción termine, luego crea una secuencia: acción con tus followPath y bloquea las acciones de finalización. Si no desea utilizar un bloque, también hay un performSelector: onTarget: acción.

https://developer.apple.com/library/ios/documentation/SpriteKit/Reference/SKAction_Ref/Reference/Reference.html

He creado mi SKAction de esta manera:

unicornAction = [SKAction followPath:mypath asOffset:NO orientToPath:YES duration:0.1];

y lo agregué a mi SKSprite :

[sprite runAction:[SKAction repeatActionForever:unicornAction] withKey:@"move"];

Hago esto para poder ajustar la velocidad en cualquier momento dentro del movimiento de los sprites a lo largo del camino.

Cuando mi sprite llega al final del camino, necesito una devolución de llamada para poder eliminar el sprite. ¿Cómo puedo obtener una devolución de llamada?

Además, ¿hay una mejor manera de usar SKAction para hacer lo que estoy tratando de hacer, mientras me permite cambiar la velocidad en cualquier lugar durante la ejecución de las acciones?


Puede usar una secuencia con un runBlock o performSelector al final:

SKAction* sequence = [SKAction sequence:@[unicornAction, [SKAction runBlock:^{ // code at end of path goes here... }]];

También puedes usar

[sprite runAction:sequence withKey:@"follow path"];

y luego obtener la acción por clave:

SKAction* sequence = [sprite actionForKey:@"follow path"];