2015-09-22 38 views
2

我正在嘗試使用DOTween中的easing函數來動畫Time.timescale如何在DOTween中使用緩動函數爲Unity Time.timeScale創建動畫?

漸變本身的價值似乎工作:

DG.Tweening.DOTween.To(value => Time.timeScale = value, 1, 0, 0.4f);

但文件中所提及的所有SETX()方法不可用在對象上這個回報,當我發現我可以設置timeScale屬性,似乎沒有任何方法可以爲此補間使用緩動功能。

我錯過了什麼?

回答

2

想通了:

不幸的是,似乎在DOTween所有SETX()方法爲擴展方法來實現。這意味着如果您試圖通過指定完整類型來使用DOTween,而不是包含命名空間,則這些方法根本不可用。

這工作:

using DG.Tweening; 
/// 
DOTween.To(()=> Time.timeScale, x=> Time.timeScale = x, 2, 0.4f).SetEase(Ease.InQuad).SetUpdate(true); 

但這不行

DG.Tweening.DOTween.To(()=> Time.timeScale, x=> Time.timeScale = x, 2, 0.4f).SetEase(DG.Tweening.Ease.InQuad).SetUpdate(true); 
+0

它似乎工作沒有你的SetEase鏈方法,我的DOTween。 : DG.Tweening.DOTween.To(()=> Time.timeScale,x => Time.timeScale = x,2,0.4f).SetEase(DG.Tweening.Ease.InQuad).SetUpdate(true); –

+0

對不起,在我的例子(糾正)是一個小錯誤。事實仍然是,你必須使用'使用DG.Tweening'來使SetEase()和SetUpdate()方法成爲有效的調用。這是因爲它們是作爲擴展方法實現的。 –

+0

我知道了,這很好。感謝您指出。 –

1

它看起來像我想要通過逐漸減慢時間而不是暫時停止執行來暫停執行,而您想要使用緩動方法。

要設置易於在DOTween通過鏈接這樣就放心了方法調用只需添加:

DG.Tweening.DOTween.To(value => Time.timeScale = value, 1, 0, 0.4f).SetEase(Ease.InCubic)); 

鏈多個方法這樣在一起,這在運行上的debug.log每天更新電話:

DG.Tweening.DOTween.To(value => Time.timeScale = value, 1, 0, 0.4f).OnUpdate(()=>{ Debug.Log(Time.timeScale); }).SetEase(Ease.InCubic); 

運行此代碼顯示Time.timeScale實際上不會爲零,可能是由於浮點精度錯誤;然而,使用的OnUpdate鏈方法Time.timeScale可以分配零一旦得到足夠接近:

DG.Tweening.DOTween.To(value => Time.timeScale = value, 1, 0, 0.4f).OnUpdate(()=>{ if (Time.timeScale < 0.001f) Time.timeScale = 0; }).SetEase(Ease.InCubic); 

我希望這有助於!

+0

我想我失去了一些東西,因爲我沒有.SetEase(),也不是的OnUpdate( )方法可用。 –

+0

這很奇怪。查看此鏈接並搜索「鏈接回調」頁面(不帶引號):http://dotween.demigiant.com/documentation.php 您應該擁有所有這些方法,OnUpdate,OnComplete,OnStart,等等。 –

+0

謝謝你的幫助。我想到了。看到我自己的答案:http://stackoverflow.com/a/32727494/10779 - 愚蠢的錯誤,使。 –