我想永遠爲2個立方體制作動畫,直到用戶點擊其中一個。動畫應該像∞一樣。永遠動畫SCNNode - SceneKit,Swift
這些都是我在sceneView立方體我想動畫:
我試圖做到這一點與嵌套的動畫,它並部分工作。現在,由於動畫在開始新動畫之前總是等到完成,所以看起來並不平坦。
在繼續開發∞動畫之前,我想知道是否有更好的(實際上是工作的)方法。這是我當前的代碼:
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(2)
cube1.position = SCNVector3Make(3, 0, 0)
cube2.position = SCNVector3Make(-3, 0, 0)
println("log 0")
SCNTransaction.setCompletionBlock {
println("log 1")
while (animationKey != 1) {
//initially animationKey = 0
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(2)
cube1.position.x += 1
cube1.position.y += 1
cube2.position.x += 1
cube2.position.y += 1
println("log 2")
SCNTransaction.setCompletionBlock {
SCNTransaction.begin()
SCNTransaction.setAnimationDuration(2)
cube1.position.x -= 1
cube1.position.y -= 1
cube2.position.x -= 1
cube2.position.y -= 1
println("log 3")
SCNTransaction.setCompletionBlock { animationKey = 1 }
SCNTransaction.commit()
}
println("log 4")
SCNTransaction.commit()
}
}
println("log 5")
SCNTransaction.commit()
println("log 6")
}
輸出顯示了以下幾件事: log 0, log 5, log 6, log 1, log 2, log 4, log 2
...然後它只是log 4
和log 2
交流仍在繼續。
有人可以幫我嗎?
注意
我想到了一個遞歸方法會更好,所以我換成
animationKey = 1
與調用,這是在方法......根本不工作了。我的動畫工作一次,但現在它剛剛完成了第一個動畫後停止,完全忽略了第二和第三動畫塊...
好的,這已經很棒了。有沒有辦法將選項分配給SCNAction?所以就像'CurveEaseIn'一樣。事情是我希望它是光滑的,但現在它只是完成動畫,然後開始下一個...:/ – LinusGeffarth
action.timingMode = SCNActionTimingModeEaseInEaseOut; –
很酷,謝謝:) – LinusGeffarth