如何使用计时功能缓慢加速 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。
在视频中,您可以看到它似乎开始快,然后慢下来。之所以会这样,是因为我要秤,越大越慢...
问题:我不知道如何使用计时功能,而且我一直没能找到好的来源作为参考?
如有任何帮助,我们将不胜感激!!!
查看 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
}
我有一个要扩展的精灵。我正在使用 scaleTo skaction 来执行此操作...我希望它慢慢缓和。这是我最初的解决方案:
let scal = SKAction.scale(by: 100, duration: 10)
scal.timingMode = SKActionTimingMode.easeIn
问题是随着它的扩展,因为它扩展得太多了,所以速度似乎变慢了。所以我需要使用 timeingFunction 来为动作编写自定义的 easeIn。
在视频中,您可以看到它似乎开始快,然后慢下来。之所以会这样,是因为我要秤,越大越慢...
问题:我不知道如何使用计时功能,而且我一直没能找到好的来源作为参考?
如有任何帮助,我们将不胜感激!!!
查看 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
}