Comment appliquer différents effets d'accélération à l'action des sprites?

J'utilise beaucoup de fonctionnalités CCEase* dans Cocos2D décrites ici . iOS 7 Sprite Kit possède également SKActionTimingMode . Cependant seulement des modes simples. Comment puis-je get des effets similaires à CCEaseElasticIn ou CCEaseBounceIn utilisant Sprite Kit ?

Sprite Kit a laissé intentionnellement (ou interpolation) intentionnellement limité avec l'espoir que le développeur prendrait le contrôle des spécificités du mouvement des sprites. Fondamentalement, ce que vous devez faire est de faire une action personnalisée et d'appliquer une courbe d'accélération au paramètre avant de changer la propriété (rotation, position, échelle, etc) de l'image-object. Voici un exemple.

 CGFloat initialScale = mySprite.xScale; SKAction *scaleAction = [SKAction customActionWithDuration:duration actionBlock:^(SKNode *node, CGFloat elapsedTime) { CGFloat t = elapsedTime/duration; CGFloat p = t*t; CGFloat s = initialScale*(1-p) + scale * p; [node setScale:s]; }]; [mySprite runAction:scaleAction]; 

La partie de ceci qui détermine l'assouplissement est p = t*t . Ainsi, p est une fonction de t telle que:

  • quand t vaut 0, p vaut 0
  • quand t vaut 1, p vaut 1

Cela signifie que vous commencerez au début et à la fin à la fin, mais la forme de la courbe entre les deux déterminera comment vous y arrivez. Les fonctions d'accélération peuvent être simples, comme celle montrée ici, qui est essentiellement une facilité, ou plutôt complexe comme l'élastique ou le rebond. Pour créer le vôtre, essayez ceci: http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm Ou jetez un coup d'œil aux équations de Robert Penner: http://www.robertpenner.com/easing/

Pour un assouplissement arbitraire, la réponse de Kardasis dit tout.

Si vous cherchez un moyen facile d'append un effet de rebond à vos animations, cela correspond à la façon dont les choses sont faites dans UIKit, j'ai quelque chose pour vous.

Apple a introduit les animations de spring dans UIKit il y a quelques années, en vous permettant de régler l'amortissement du ressort et la vélocité initiale lors de l'exécution d'une animation UIView. Malheureusement, ils ne l'ont pas implémenté dans SpriteKit, j'ai donc créé ma propre bibliothèque.

C'est un set d'extensions sur SKAction qui reproduisent la plupart des methods d'usine, en ajoutant les parameters d'amortissement et de vélocité.

Le code est sur GitHub, n'hésitez pas à l'utiliser: https://github.com/ataugeron/SpriteKit-Spring