SpriteKit SKAction easing
Ну, заголовок дает вопрос, как я могу применить ослабление к действиям SKAction node в SpriteKit?
Я обнаружил, что это работает:
SKAction *moveAction = [SKAction moveByX:moveX y:moveY duration:0.5];
moveAction.timingMode = SKActionTimingEaseInEaseOut;
[node runAction:moveAction];
Однако есть только несколько доступных типов ослабления , а именно: Linear, EaseIn, EaseOut, EaseInOut.
И эти ослабляющие значения являются фиксированными и не могут быть изменены. Я ищу что-то вроде EleasticInOut. С предпочтительнее немного больше контроля. Как я могу создать это?
Ответы
Ответ 1
Я использую рамки SKEase:
https://github.com/buddingmonkey/SpriteKit-Easing
Он прост в использовании в качестве стандартных действий SpriteKit и добавляет все обычные более сложные решения: кубический, отскок, эластичный, задний и т.д.
SpriteKitUtils также добавляет более сложные типы упрощения и некоторые полезные утилиты SpriteKit: https://github.com/raywenderlich/SKTUtils
Другой вариант состоит в том, чтобы свернуть свой собственный метод пользовательских действий и передать ему блок кода с помощью пользовательской функции облегчения/анимации:
-(SKAction *)customActionWithDuration:(NSTimeInterval)seconds actionBlock:(void (^)(SKNode *node, CGFloat elapsedTime))block
Ответ 2
Apple представила анимацию spring в UIKit пару лет назад, позволив вам установить затухание и начальную скорость spring при выполнении анимации UIView. К сожалению, они не реализовали это в SpriteKit, поэтому я создал свою собственную библиотеку, которая делает именно это.
Это набор расширений на SKAction, которые реплицируют большинство методов factory, добавляя параметры затухания и скорости.
Код находится на GitHub, не стесняйтесь использовать его: https://github.com/ataugeron/SpriteKit-Spring