color big ios ios7 sprite-kit

ios - big - ¿Cómo aplicar diferentes efectos de relajación a la acción de los sprites?



ionic p (2)

Utilizo muchas funcionalidades de CCEase* en Cocos2D descritas aquí . iOS 7 Sprite Kit también tiene SKActionTimingMode . Sin embargo, solo modos simples. ¿Cómo puedo obtener efectos similares a CCEaseElasticIn o CCEaseBounceIn usando el Kit de Sprite ?


El Kit de Sprite dejó la relajación (o interpolación) limitada intencionalmente con la expectativa de que el desarrollador tomaría control de los detalles del movimiento de los sprites. Básicamente, lo que debe hacer es realizar una acción personalizada y aplicar una curva de aceleración al parámetro antes de cambiar la propiedad (rotación, posición, escala, etc.) del sprite. Aquí hay un ejemplo.

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 parte de esto que determina la relajación es p = t*t . Entonces, p es una función de t tal que:

  • cuando t es 0, p es 0
  • cuando t es 1, p es 1

Eso significa que comenzará al principio y al final al final, pero la forma de la curva intermedia determinará cómo llegar allí. Las funciones de facilitación pueden ser simples, como la que se muestra aquí, que es básicamente una facilidad de entrada, o bastante compleja, como elástico o de rebote. Para generar el suyo, intente esto: http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm O eche un vistazo más detallado a las ecuaciones de Robert Penner: http://www.robertpenner.com/easing/


Para la relajación arbitraria, la respuesta de Kardasis lo dice todo.

Si buscas una manera fácil de agregar un efecto de rebote a tus animaciones, que sea consistente con la forma en que se hacen las cosas en UIKit, tengo algo para ti.

Apple introdujo las animaciones de primavera en UIKit hace un par de años, al permitirte establecer una amortiguación de primavera y velocidad inicial al realizar una animación de UIView. Desafortunadamente no implementaron eso en SpriteKit, así que hice mi propia biblioteca que hace precisamente eso.

Es un conjunto de extensiones en SKAction que replican la mayoría de los métodos de fábrica, agregando los parámetros de amortiguación y velocidad.

El código está en GitHub, no dude en utilizarlo: https://github.com/ataugeron/SpriteKit-Spring