cocos實作貝塞爾曲線CCBezierTo
功能需求:元素呈曲線運動
開發工具:Xcode
cocos對貝塞爾曲線的定義如下
typedef struct _ccBezierConfig {
//! end position of the bezier
CCPoint endPosition;
//! Bezier control point 1
CCPoint controlPoint_1;
//! Bezier control point 2
CCPoint controlPoint_2;
} ccBezierConfig;
原理也不難,只需要自己確定好初始點位置、終點位置,中間點位置看具體需求,若需要更加均勻舒緩,則將中間兩點位置均勻分布在始終點之間,若需要前面運動急促,后面運動舒緩,則將第一個點(controlPoint_1)與始發點離的近一點,第二個點離終點遠一些,且三個點的高度無太大差別,依次可以演化更多的運動形式,具體以需求為準,
三個點都需要進行設定,未設定點則元素會直接默認為(0,0),簡單測驗一下就可以明白,
以下為我設定的引數
flybird->setPosition(ccp(500,600)); //初始點
ccBezierConfig bezier; //實體化
bezier.controlPoint_1 = ccp(700, 530); //第一個點
bezier.controlPoint_2 = ccp(900, 530); //第二個點
bezier.endPosition = ccp(1200, 600); //終點
之后就可以呼叫CCBezierTo來控制運動的速度,當然,如果想要控制運動程序中的角度,可以繼續呼叫CCRotateTo/CCRotateBy來控制元素的運動角度,
部分代碼如下
flybird->runAction(CCSpawn::create(CCBezierTo::create(4.0,bezier),
CCRotateTo::create(3.5, -50),
NULL));
貝塞爾曲線原理其實不難,還有疑問的可以在代碼中設定一下,看看效果,多改改值就可以明白每部分的意思,
希望能給大家帶來幫助!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/332175.html
標籤:其他
下一篇:Unity基礎知識2
