• Cocos2d入门--2-- 三角函数的应用


     

    Cocos2d入门--2-- 三角函数的应用 

    其实,三角函数的知识点是初中的数学基础。但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效。

     

    首先要注意的是 角度 和 弧度 的转换。

    360度 = 2×PI弧度

    180度 =   PI弧度

    所以30度的正弦函数 = sin(30/180×PI)

     

    但是在cocos2d游戏引擎提供的sin(参数值)这里的参数值范围是在[0,1]之间。

     

     

    利用三角函数的波形来控制小球的运动

     

     关键代码:

    头文件:

    1 protected:
    2     float _angle;

    cpp实现文件:

    复制代码
     1     _angle = 0;
     2     
     3     //1、创建一个点
     4     auto dot = DrawNode::create();
     5     dot -> drawDot(Vec2(0, 0), 10, Color4F(1.0, 1.0, 1.0, 1.0));
     6     addChild(dot);
     7     
     8     dot -> setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2);
     9     
    10     CCLOG("%f",origin.y + visibleSize.height/2);
    11     
    12     schedule([dot,this,visibleSize,origin](float f){
    13         //2、写这里代码之前,我们先在头文件中,创建一个成员变量float _angle,用来记录角度
    14         //3、然后我们可以使用这个成员变量,因为需要变换角度或者位置,所以就用set...,这里先变换Y坐标的位置
    15         //4、初始化_angle写到前面
    16         //5、为了能够发生变化,所以需要:
    17         _angle += 0.1;
    18         dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    19         dot -> setPositionX(sin(_angle)*100 + origin.x + visibleSize.width/2);
    20     }, "Test");
    复制代码

    当你把schedule里面的两个使用的sin三角函数都换成cos函数,实现的效果是一样的,当你如果一个使用sin,另一个使用cos,就会出现下面的圆周运动的效果:

    1 dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    2 dot -> setPositionX(cos(_angle)*100 + origin.x + visibleSize.width/2);

     

    然后如果要实现椭圆的运动,就需要把×100适当改一下,改其中一个就好:

    1 dot -> setPositionY(sin(_angle)*100 + origin.y + visibleSize.height/2);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
    2 dot -> setPositionX(cos(_angle)*150 + origin.x + visibleSize.width/2);

     

  • 相关阅读:
    jade -Template Engine
    GitHub 版本管理工具
    Bootstrap笔记
    网页布局笔记
    html,css的笔记
    Angular 实例项目 angular-phonecat 的一些问题
    sublime 浏览器快捷键配置
    Javascript 事件 笔记 1
    Bootstrap 学习笔记 一
    Codeforces 546 E:士兵的旅行 最大网络流
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5877389.html
Copyright © 2020-2023  润新知