最近為了動畫的部分傷透腦筋,結果發現Cocos2D裡面有這樣東西,挺好用的,現在來作個研究。
首先我做了四張圖,模擬蝴蝶拍打翅膀。
一般播放時,只是單純的拍打翅膀,現在我希望它會飛。
但是如果你用CCMoveTo之類的方法,它只會很單純的直線前進,沒辦法顯示出那種飛行的感覺。翅膀一振時加速然後慢慢減速,不過事實上蝴蝶飛行時翅膀震動很快就是了。
在我翻找Cocos2D的動畫時,發現了這個好東西,CCBezierBy。
先說明用法,首先先呼叫Confiq,然後確認三個CGPoint,再來就像一般的動畫方法呼叫就可以了:
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(20, 60);
bezier.controlPoint_2 = ccp(60, 20);
bezier.endPosition = ccp(70, 50);
CCBezierBy *curve = [CCBezierBy actionWithDuration:2 bezier:bezier];
應該不用我說明其他的部分了吧?
運行看看,如果有閒情逸致可以研究它的源代碼,不然就憑感覺去調整吧,我個人比較喜歡平感覺去調整,有時會看到意想不到的效果。
如果用CCRepeatForever,那就會呈現一直飛的樣子,再調整拍打翅膀一次所需的時間,看起來就會很像是在飛了。某種意義上,這提供了非直線行進路徑的動畫,甚至可以嘗試使用多個CCBezierBy來串在一起以調整出不規則的路線。
首先我做了四張圖,模擬蝴蝶拍打翅膀。
一般播放時,只是單純的拍打翅膀,現在我希望它會飛。
但是如果你用CCMoveTo之類的方法,它只會很單純的直線前進,沒辦法顯示出那種飛行的感覺。翅膀一振時加速然後慢慢減速,不過事實上蝴蝶飛行時翅膀震動很快就是了。
在我翻找Cocos2D的動畫時,發現了這個好東西,CCBezierBy。
先說明用法,首先先呼叫Confiq,然後確認三個CGPoint,再來就像一般的動畫方法呼叫就可以了:
ccBezierConfig bezier;
bezier.controlPoint_1 = ccp(20, 60);
bezier.controlPoint_2 = ccp(60, 20);
bezier.endPosition = ccp(70, 50);
CCBezierBy *curve = [CCBezierBy actionWithDuration:2 bezier:bezier];
應該不用我說明其他的部分了吧?
運行看看,如果有閒情逸致可以研究它的源代碼,不然就憑感覺去調整吧,我個人比較喜歡平感覺去調整,有時會看到意想不到的效果。
如果用CCRepeatForever,那就會呈現一直飛的樣子,再調整拍打翅膀一次所需的時間,看起來就會很像是在飛了。某種意義上,這提供了非直線行進路徑的動畫,甚至可以嘗試使用多個CCBezierBy來串在一起以調整出不規則的路線。
留言
張貼留言