16

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

我发现这有效:

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

然而,那里只有几种缓动类型可用即 Linear、EaseIn、EaseOut、EaseInOut。

并且这些缓动值是固定的,不能更改。我正在寻找类似 EleasticInOut 的东西。最好有更多的控制。我怎样才能创造它?

4

2 回答 2

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
于 2014-02-13T19:47:28.227 回答
11

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

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

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

于 2014-10-18T23:28:36.593 回答