使用 SKKeyFrameSequence 值驱动自定义 SKAction,怎么样?

Drive custom SKAction with SKKeyFrameSequence values, how?

对于由自定义 SKAction 完成的运动,我想要一种比传统方程式创建的曲线更强的缓动类型。

如何使用 SKKeyFrameSequence 在 SKAction 中驱动动画?

SKKeyFrameSequence 创建我想要的曲线类型,像这样:

let sequence = SKKeyframeSequence(
    keyframeValues: [0.00, 0.05, 0.25, 0.70, 0.85, 0.95, 0.98, 1.00],
    times:          [0.00, 0.10, 0.15, 0.20, 0.23, 0.28, 0.50, 1.00])

sequence.interpolationMode = .spline
stride(from: 0.00, to: 1.00, by: 0.025).forEach {
let value = sequence.sample(atTime: CGFloat([=10=]))

在 PlayGrounds 中创建的曲线上看起来像这样:

SKActions,自定义类型,接受经过的时间和应用更改的节点。

但我无法想象如何获取 SKKeyFrameSequence 值并将它们放入自定义 SKAction 中以转换自定义 Action 运行 所在节点的位置、旋转或缩放。

SK 自定义操作文档: https://developer.apple.com/reference/spritekit/skaction/1417745-customaction

要使用自定义操作,您似乎传递了一个将位置设置为 customAction(withDuration:actionBlock):

的块
let action = SKAction.customAction(withDuration: duration) { node, elapsed in
    node.position.x = sequence.sample(atTime: elapsed/duration)
}