2013-09-26 41 views
8

我用了很多的CCEase*功能在的Cocos2D描述here。 iOS 7 Sprite Kit也有SKActionTimingMode。但只有簡單的模式。我如何能得到CCEaseElasticInCCEaseBounceIn使用效果如下Sprite Kit如何將不同的緩動效果應用於精靈動作?

+0

我想蘋果希望我們使用customActionWith ......對於這樣的情況下。 – LearnCocos2D

+0

你有任何線索如何使'customActionWith'發生? – Pablo

+1

只在概念上,總體思路是使用elapsedTime以及持續時間,並將兩者都輸入到緩動動作中,以確定在任何給定的elapsedTime期間期望的屬性(即位置)應該改變多少。例如,您可以從cocos2d調整緩動功能。 – LearnCocos2D

回答

33

精靈工具包左緩和(或補間)以期望的顯影劑將採取精靈的運動的具體的控制有意的限制。基本上,你需要做的是做一個自定義操作,並在改變精靈的屬性(旋轉,位置,比例等)之前對參數應用一個緩動曲線。這是一個例子。

CGFloat initialScale = mySprite.xScale; 
SKAction *scaleAction = [SKAction customActionWithDuration:duration actionBlock:^(SKNode *node, CGFloat elapsedTime) { 
    CGFloat t = elapsedTime/duration; 
    CGFloat p = t*t; 
    CGFloat s = initialScale*(1-p) + scale * p; 
    [node setScale:s]; 
}]; 
[mySprite runAction:scaleAction]; 

決定寬鬆的部分是p = t*t。所以,p是一個功能t這樣的:

  • t爲0,p是0
  • t爲1,p是1

這意味着你將在開始開始和結束時,但曲線的形狀將決定你如何到達那裏。緩和功能可以很簡單,就像這裏所示的一樣,它基本上是一種易入性,或者非常複雜,如彈性或反彈。要生成自己的,試試這個:http://www.timotheegroleau.com/Flash/experiments/easing_function_generator.htm 還是拿在羅伯特·彭納方程的更多詳細信息:http://www.robertpenner.com/easing/

+0

優秀的答案和感謝鏈接! Upvote並接受! – Pablo

+0

不同緩動函數類型的數學實現的另一個好鏈接在:https://github.com/warrenm/AHEasing – vim

+0

我們如何將這個應用到'SKAction followPath'? – Jonny

2

任意寬鬆,Kardasis的回答了一切。

如果你正在尋找一個簡單的方法來添加彈跳效果將您的動畫,這是事情UIKit中做的方式是一致的,我有東西給你。

蘋果UIKit中推出春季動畫在幾年前,通過讓你執行一個UIView動畫時設置的彈簧阻尼和初始速度。不幸的是,它們並沒有在SpriteKit中實現,所以我創建了自己的庫來做到這一點。

這是一組複製大多數工廠方法上SKAction擴展,將所述阻尼和速度參數。

的代碼是在GitHub上,隨意使用它:https://github.com/ataugeron/SpriteKit-Spring