SpriteKit SKAction缓和

时间:2013-09-30 13:22:17

标签: ios cocoa-touch

好吧标题提出了问题,如何将缓动应用于SpriteKit中的SKAction节点操作?

我发现这有效:

SKAction *moveAction = [SKAction moveByX:moveX y:moveY duration:0.5];
moveAction.timingMode = SKActionTimingEaseInEaseOut;
[node runAction:moveAction];

然而,只有少数缓动类型可用there,即Linear,EaseIn,EaseOut,EaseInOut。

这些宽松值是固定的,不能改变。我正在寻找像EleasticInOut这样的东西。最好有一点控制。我该如何创建呢?

2 个答案:

答案 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)

几年前,Apple通过让你在执行UIView动画时设置弹簧阻尼和初始速度,在UIKit中引入了弹簧动画。不幸的是他们没有在SpriteKit中实现它,所以我创建了自己的库来实现这一点。

SKAction上的一组扩展复制了大多数工厂方法,添加了阻尼和速度参数。

代码在GitHub上,随意使用它:https://github.com/ataugeron/SpriteKit-Spring