zoukankan      html  css  js  c++  java
  • 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);

     

  • 相关阅读:
    HDU 5744
    HDU 5815
    POJ 1269
    HDU 5742
    HDU 4609
    fzu 1150 Farmer Bill's Problem
    fzu 1002 HangOver
    fzu 1001 Duplicate Pair
    fzu 1150 Farmer Bill's Problem
    fzu 1182 Argus 优先队列
  • 原文地址:https://www.cnblogs.com/LiLihongqiang/p/5877389.html
Copyright © 2011-2022 走看看