2017-04-10 35 views
2

在我用SpriteKit開發的遊戲中,我希望某些對象出現並縮小。我已經知道如何將它們縮小,而我實現這個使用下面的代碼:指數縮小SKNode

myNode.run(SKAction.scale(to: 0, duration: 3)) 

然而,萎縮發生「線性」。有沒有辦法讓它縮小得更快?或者至少它開始緩慢,在最後一秒,它縮小兩倍的速度?

+0

嘗試使用緩動模式。但我懷疑它會給你一個理想的結果。雖然有第三方......所以你可以嘗試一下。或者,也許你可以嘗試一個自定義的動作... – Whirlwind

+0

這可能是你在找什麼http://stackoverflow.com/questions/40043177/easeout-action-with-custom-skaction – 0x141E

回答

0

對不起,我無法測試這個,我沒有編譯器。這是正確不這樣做的最佳方式,但我給它一個鏡頭:

func delay(_ delay:Double, closure:@escaping()->()) { 
     let when = DispatchTime.now() + delay 
     DispatchQueue.main.asyncAfter(deadline: when, execute: closure) 
    } 

let totalRunTime = 1 
var add = 0.0 
var scale = 1 
var done = false 
while !done{ 
delay(add, closure: { 
add += 0.1 
scale = 1 - (add ^2) 
myNode.run(SKAction.scale(to: scale, duration: totalRunTime/10)) 
}) 
if add == 0{ 
done = true 
} 
} 

編輯:當我看着我的代碼,我可能會看到一個錯誤:也許你需要從規模切換指數公式持續時間,使其工作,現在我不能測試:(

0

看一看的Sprite Kit Utils雷Wenderlich。這是一個相當有用的庫,並提供寬鬆的運動,大規模的功能和旋轉動作。

(僅供參考,請看easings.net上展示的不同緩動功能)

希望有所幫助!