cocos实现贝塞尔曲线CCBezierTo
功能需求:元素呈曲线运动 开发工具:Xcode
cocos对贝塞尔曲线的定义如下
typedef struct _ccBezierConfig {
CCPoint endPosition;
CCPoint controlPoint_1;
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));
贝塞尔曲线原理其实不难,还有疑问的可以在代码中设置一下,看看效果,多改改值就可以明白每部分的意思。
希望能给大家带来帮助!!!
|