2017-02-03 21 views
2

對於運動要由自定義SKAction完成,我想要一個比傳統方程創建的曲線更可靠的緩和類型。使用SKKeyFrameSequence值驅動自定義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($0)) 

這看起來是這樣的,在操場創建一個曲線:

enter image description here

SKActions,自定義類型,請考慮已用時間和節點對其應用更改。

但我無法想象如何獲取SKKeyFrameSequence值並將它們放入自定義SKAction中以轉換運行自定義Action的節點的位置,旋轉或縮放比例。

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

回答

1

要使用自定義操作,它看起來像你通過它設置的位置customAction(withDuration:actionBlock)塊:

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

也許我已經在做的簡單這個例子......如果持續時間不是1秒(比如2秒),那麼如何處理? – Confused

+0

@Confused查看我的編輯。 – NobodyNada

+0

阿格,輝煌。這是否意味着「持續時間」在關閉的範圍之內?我擔心它不會。 – Confused

相關問題