Cocos2d入门--2--三角函数的应用
2016-03-11 00:00
525 查看
其实,三角函数的知识点是初中的数学基础。但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效。
首先要注意的是 角度 和 弧度 的转换。
360度 = 2×PI弧度
180度 = PI弧度
所以30度的正弦函数 = sin(30/180×PI)
但是在cocos2d游戏引擎提供的sin(参数值)这里的参数值范围是在[0,1]之间。
利用三角函数的波形来控制小球的运动
关键代码:
头文件:
cpp实现文件:
当你把schedule里面的两个使用的sin三角函数都换成cos函数,实现的效果是一样的,当你如果一个使用sin,另一个使用cos,就会出现下面的圆周运动的效果:
然后如果要实现椭圆的运动,就需要把×100适当改一下,改其中一个就好:
首先要注意的是 角度 和 弧度 的转换。
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);
相关文章推荐
- Cocos2d-X-3.0之后的版本的环境搭建
- Cocos2d入门--3--小球运动
- Cocos2d入门--1--初涉相关属性或代码
- Cocos2d入门--3--向量的应用
- Cocos2d入门--2--三角函数的应用
- Cocos2d-X-3.0之后的版本的环境搭建
- Cocos2d入门--3--小球运动
- Cocos2dx WebSocket的使用
- COCOS学习笔记--Menu菜单系统
- cocos2d-x编译问题集合之error C2440: “类型转换”: 无法从“void (__thiscall ::* )(void)”转换为“
- cocos2d-x之物理引擎之碰撞监测
- cocos2d-x之物理引擎初试
- 2dx 算两个点之间的角度
- 2dx 改变动画 ac32 速率
- cocos2dx ListView 动态加载(代码)
- cocos2d-x v3.2 FlappyBird 各个类对象详细代码分析(7)
- cocos2dx中使用JPG图和只带Alpha的PNG图合成渲染
- 15、Cocos2dx 3.0游戏开发找小三之Sprite:每一个精灵都是上辈子折翼的天使
- cocos2d-x 3.10 安卓 屏幕适配
- cocos2d-x之猜数字游戏