【问题标题】:SpriteKit SKAction easingSpriteKit SKAction 缓动
【发布时间】:2014-10-19 07:28:36
【问题描述】:

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

我发现这行得通:

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

但是,只有少数可用的缓动类型there,即 Linear、EaseIn、EaseOut、EaseInOut。

这些缓动值是固定的,不能更改。我正在寻找类似 EleasticInOut 的东西。最好有更多的控制。我该如何创建它?

【问题讨论】:

  • Action Timing Modes 列在常量下猜想我们现在坚持使用苹果的功能
  • 我认为您应该为此使用自定义操作。另外我认为您的问题已经在此线程 stackoverflow.com/questions/19026895/… 上得到了回答
  • 有谁知道如何完全关闭 SkAction 的缓动?我认为这是一个非常重要的属性,但也许不是......
  • @ObjectiveCsam - “线性”不是缓动(即,它从 a 点线性移动到 b 点,而不是在开始或结束时更慢)。

标签: ios cocoa-touch


【解决方案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 几年前在 UIKit 中引入了弹簧动画,让您在执行 UIView 动画时设置弹簧阻尼和初始速度。不幸的是,他们没有在 SpriteKit 中实现这一点,所以我创建了自己的库来实现这一点。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 2016-04-08
      • 2014-09-23
      • 2014-09-03
      • 2017-07-02
      相关资源
      最近更新 更多