[英]What's the difference between these two SpriteKit functions?
我不知道這兩個功能有什么區別。
第一:
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
第二:
coin.position.y = -146.115
直到下一幀- update
之后,才會直接處理SKAction。 如果在didEvaluateActions
之后調用.run
,則您的位置將不會更新,因此您可能會遇到錯誤。
無論您在SK循環中的位置如何,第二行代碼都將立即生效。
例如,如果您正在使用物理學,並在didBegin(contact
中的didBegin(contact
.run(.move(
上調用.run(.move(
,然后期望該對象已被didEnd(contact)
,那么您將遇到問題。在這種情況下,您想要手動調整.position
而不是使用操作。
其次, .run
命令的性能也較低,因為它需要初始化SKAction對象,這比手動調整位置要慢20-30%。
當然,這種差異的總和並不大,但是在復雜的場景中,是否以16ms(60fps)的速度完成所有操作之間可能是有所不同。
第三,就像其他人提到的那樣,有forDuration
參數,該參數使您可以在一段時間內(例如2秒或所需的時間)對移動進行動畫處理。
SKAction.moveTo()
有一個duration
參數,因為它是在指定時間間隔內更改節點位置的動畫版本。 另一方面,更改節點的位置不會使運動動畫。
在第一行中,您正在使用硬幣類對象,並且通過該對象運行訪問函數。
coin.run(SKAction.moveTo(y: -146.115, duration: 0))
在第二行硬幣類對象中,訪問其屬性position.y
並為其分配浮點值。
coin.position.y = -146.115
希望你明白了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.