好吧标题提出了问题,如何将缓动应用于SpriteKit中的SKAction节点操作?
我发现这有效:
SKAction *moveAction = [SKAction moveByX:moveX y:moveY duration:0.5];
moveAction.timingMode = SKActionTimingEaseInEaseOut;
[node runAction:moveAction];
然而,只有少数缓动类型可用there,即Linear,EaseIn,EaseOut,EaseInOut。
这些宽松值是固定的,不能改变。我正在寻找像EleasticInOut这样的东西。最好有一点控制。我该如何创建呢?
答案 0 :(得分:15)
我一直在使用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
答案 1 :(得分:10)
SKAction上的一组扩展复制了大多数工厂方法,添加了阻尼和速度参数。
代码在GitHub上,随意使用它:https://github.com/ataugeron/SpriteKit-Spring