如何使用计时功能缓慢加速 SpriteKit 的缩放功能

How to use timing function for slowly speed up scaling function with SpriteKit

我有一个要扩展的精灵。我正在使用 scaleTo skaction 来执行此操作...我希望它慢慢缓和。这是我最初的解决方案:

    let scal = SKAction.scale(by: 100, duration: 10)
    scal.timingMode = SKActionTimingMode.easeIn

问题是随着它的扩展,因为它扩展得太多了,所以速度似乎变慢了。所以我需要使用 timeingFunction 来为动作编写自定义的 easeIn。

https://youtu.be/CE-B27gSXJI

在视频中,您可以看到它似乎开始快,然后慢下来。之所以会这样,是因为我要秤,越大越慢...

问题:我不知道如何使用计时功能,而且我一直没能找到好的来源作为参考?

如有任何帮助,我们将不胜感激!!!

查看 Ray Wenderlich 的 Sprite Kit Utils,以获取有关如何编写缓动函数的示例:https://github.com/raywenderlich/SKTUtils 具体来说,请查看 SKTTimingFunctions.swift 和 SKTEffects.swift。

有一些巧妙的功能可以让您更好地控制缓动。您甚至可能想使用那里定义的缓动函数而不做任何更改,它们中的大多数都工作得很好。有关每个缓动函数的行为方式的参考,您可以查看 http://easings.net

希望对您有所帮助!

我打算将上面的答案标记为正确,但这最终成为我的解决方案,我想分享它,因为它易于实施。

我不完全理解这是如何工作的,但是当您为 timingFunction 指定函数时,您必须包括 "t in"。然后就可以用这个t来操纵动画的时间了

因此,如果您查看上面的链接,您可以通过使用 Ray SKTTimingFunctions.swift.

中函数中包含的内容来获得所需的效果

下面的代码展示了我是如何使用它的;我的计时功能开始缓慢,然后慢慢加快速度...再次查看上面的链接,您可以了解一下。

let scal = SKAction.scale(by: 100, duration: 10)
scal.timingFunction = { t in
    return t*t*t*t*t
}