cocos2d-x-3.0学习笔记之贝塞尔曲线

原创 2016年08月30日 22:26:25

贝塞尔曲线(Bézier curve),又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线。一般的矢量图形软件通过它来精确画出曲线,贝兹曲线由线段与节点组成,节点是可拖动的支点,线段像可伸缩的皮筋,我们在绘图工具上看到的钢笔工具就是来做这种矢量曲线的。
在cocos中,要实现贝塞尔曲线十分简单,因为引擎已经帮我门封装好了。下面就用贝塞尔曲线来做出精灵在固定范围类来回曲线运动的效果

void raise()
{
    if (m_status == FLY_RIGHT)
        m_status = FLY_LEFT;
    else
        m_status = FLY_RIGHT;
    updateItem();
    //运动曲线
    //定义贝塞尔曲线
    //给贝塞尔曲线所需要的峰值设立随机坐标值
    cfg.controlPoint_1 = ccp(CCRANDOM_0_1() * m_offsetH,
        CCRANDOM_0_1() * m_offsetV);
    cfg.controlPoint_2 = ccp(CCRANDOM_0_1() * m_offsetH,
        CCRANDOM_0_1() * m_offsetV);
    cfg.endPosition = ccp(m_offsetH, m_offsetV);
    //创建贝塞尔曲线运动
    BezierBy *raise = BezierBy::create(m_duration, cfg);
      //创建回掉函数,可以看作一个运动,当贝塞尔曲线运动执行完毕之后调用
    auto callBackFunc = [&]()
    {
         //调用贝塞尔曲线返回的的函数
        fall();
    };
    auto action2 = CallFunc::create(callBackFunc);
    runAction(Sequence::createWithTwoActions(raise, action2));
}

void fall()
{
    if (m_status == FLY_RIGHT)
        m_status = FLY_LEFT;
    else
        m_status = FLY_RIGHT;
    updateItem();
    //运动曲线
    ccBezierConfig cfg;
    cfg.controlPoint_1 = ccp(-CCRANDOM_0_1() * m_offsetH,
        -CCRANDOM_0_1() * m_offsetV);
    cfg.controlPoint_2 = ccp(-CCRANDOM_0_1() * m_offsetH,
        -CCRANDOM_0_1() * m_offsetV);
    cfg.endPosition = ccp(-m_offsetH, -m_offsetV);
    BezierBy *fall = BezierBy::create(m_duration, cfg);
    auto callBackFunc = [&]()
    {
        //调用贝塞尔曲线运动的函数
        raise();
    };
    auto action2 = CallFunc::create(callBackFunc);
    runAction(Sequence::createWithTwoActions(fall, action2));

}

这样就简单实现了一个精灵在一个固定的范围内做贝塞尔曲线运动了

版权声明:

相关文章推荐

Cocos2D-X2.2.3学习笔记11(贝塞尔曲线)

发的

关于photoshop钢笔工具中各点对应到“贝塞尔曲线”中的含义(cocos2d-x与iOS)

1.程序中贝塞尔曲线的简单介绍,只介绍曲线部分。 程序中的贝塞尔曲线需要四个点:起始点(startPoint) ,控制点1(controlPoint1),控制点2(controlPoint2),结束点...

cocos2d-x学习笔记(三)让精灵按照自己设定的运动轨迹行动(曲线移动)。(以椭圆轨迹为例)。

ufolr原创,转载请注明: 转载自ufolr的博客 原文连接:http://blog.csdn.net/ufolr/article/details/7447773         在...
  • ufolr
  • ufolr
  • 2012-04-11 19:50
  • 20210

小灿 cocos2d-x-3.0学习笔记一 新工程的创建

Cocos2d-x 3.0学习文档工程的创建以及HelloWorld 的内容详解   1 cocos2d-x 3.0工程的创建:    在cocos2d-x3.0中推行使用python语言创建...

【Cocos2d-x 3.0学习笔记】精灵特效

//创建一个3D晃动的效果 Shaky3D::create(时间,晃动网格大小,晃动范围,Z轴是否晃动); //创建一个3D瓷砖晃动的效果 ShakyTiles3D::create(时间,晃动...

cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第一步---开始界面&关卡选择

***每一步对应的所有代码以及用到的资源都会打包在最后给出 ***为避免代码过多,每一步的代码都做了标记--一看就晓得是第几步实现的避免出错改不回去(难不成还用Git?) ***可以根据设计思路(好吧...

cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检测(1)

这里把cocos2d-x 3.0的物理碰撞检测单独抽离出来,做成一个简单的项目,可以看到物理碰撞检测的效果,也适合新手入门,为下一步主角和金币碰撞做准备

cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第十步---发射子弹&怪物受伤---所有源码和资源完结下载

好吧,到这一步,整个游戏基本上弄完啦,由于自己的水平也就这样.....重写的过程中很多细节处理的不好。 游戏中很多地方都留下了可扩充的代码,可是时间方面有点不够。。。而且也没美工 本次笔记内容: ...

cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第二步---编辑器(1)--触摸添加点

/* 说明: **1.本次游戏实例是《cocos2d-x游戏开发之旅》上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦,他说:随便写,第一别完全照搬代码;第二可以说明是学习...

cocos2d-x-3.0学习笔记之用户事件机制

因为cocos2d-x引擎具有跨平台的特点,因此能够接收并处理的事件包括触摸事件,键盘事件,鼠标事件,加速度事件以及自定义事件等等。 现在的人机交互中,事件处理机制一般包括三个角色:事件、事件源和事...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)