我们今天来学习一些,比较复杂的运动。
比如想走出平滑的曲线运动,我们可以使用BezierTo和BezierBy。
这个Bezier是贝塞尔曲线,大家可以搜一下基础知识。
ccBezierConfig有3个参数,
Vec2 controlPoint_1 :curve point 1(曲线点1)
Vec2 controlPoint_2 :curve point 2(曲线点2)
Vec2 endPosition :最终位置
这个曲线点1、2都是啥意思呢?看一下百度百科的解释图就明白了。

如果你还想深入明白,这个曲线为什么这么弯曲,那就好好研究一下,贝塞尔曲线的公式计算吧(我是看不明白)
我测试了两种情况,开始和结束坐标都一样,分别是(200, 400), (600, 400)。但两次的曲线点不一样,我们可以看一下效果。
第一次测试代码和效果:
auto sprite1 = Sprite::create("s1.png");
sprite1->setPosition(Vec2(200, 400));
this->addChild(sprite1);
ccBezierConfig bz;
bz.controlPoint_1 = Vec2(300, 500);
bz.controlPoint_2 = Vec2(500, 300);
bz.endPosition = Vec2(600, 400);
auto move = BezierTo::create(3, bz);
第二次测试代码和效果:
auto sprite1 = Sprite::create("s1.png");
sprite1->setPosition(Vec2(200, 400));
this->addChild(sprite1);
ccBezierConfig bz;
bz.controlPoint_1 = Vec2(200, 600);
bz.controlPoint_2 = Vec2(600, 200);
bz.endPosition = Vec2(600, 400);
auto move = BezierTo::create(3, bz);
以上是BezierTo,BezierBy的效果又是完全不一样了,因为BezierBy是以精灵当前位置为基准进行移动的。我就不举例了。