2013-12-10 6 views
15

Fondamentalmente voglio che l'azione sia in esecuzione e quindi nel mezzo dell'azione creare un effetto di rallentatore e poi portarlo fuori dal rallentatore. Qualcuno ha qualche buon feedback su come questo potrebbe essere fatto? Ho pensato di creare l'azione manualmente e utilizzando un metodo di aggiornamento, ma credo che potrebbe essere eccessivo. Speravo in una soluzione più semplice.Come posso rallentare un SKSpriteNode che esegue SKAction followPath per un effetto slow motion usando Sprite Kit?

L'altro pensiero che ho è quello di fermare l'azione e quindi ricominciare da capo a una durata inferiore, ma non penso che rimarrà sullo stesso percorso e probabilmente sembrerà strano.

Questo è il codice che sto usando per creare l'azione.

CGMutablePathRef cgpath = CGPathCreateMutable(); 
CGPathMoveToPoint(cgpath,NULL, mysprite.position.x, mysprite.position.y); 
CGPathAddCurveToPoint(cgpath, NULL, cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y); 
[mysprite runAction:[SKAction sequence:@[[SKAction followPath:cgpath asOffset:NO orientToPath:YES duration:3]]]]; 
CGPathRelease(cgpath); 

risposta

23

Ogni nodo ha una proprietà speed:

Un modificatore velocità applicato a tutte le azioni eseguite da un nodo ei suoi discendenti .

Discussione
Il valore predefinito è 1,0, il che significa che tutte le azioni eseguite alla loro velocità normale. Se si imposta una velocità diversa, l'ora appare a eseguita più rapidamente o più lentamente per tutte le azioni eseguite sul nodo e sui suoi discendenti . Ad esempio, se si imposta un valore di velocità pari a 2.0, le azioni eseguono due volte più velocemente.

È possibile impostare questo valore su un valore inferiore a 1 per rallentare l'esecuzione dell'azione. Puoi persino animare la velocità per rallentare gradualmente:

[mySprite runAction:[SKAction speedTo:0.5 duration:1.0]]; 
+3

brillante! grazie :) 1 cosa da notare: la durata è quanto tempo ci vuole per rallentare a quella velocità e non è per quanto dura quella velocità. – brilliantairic

Problemi correlati