簡體   English   中英

這兩個SpriteKit函數之間有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM