Cocos2d入门--2--三角函数的应用
其实,三角函数的知识点是初中的数学基础。但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效。
首先要注意的是 角度 和 弧度 的转换。
360度 = 2×PI弧度
180度 = PI弧度
所以30度的正弦函数 = sin(30/180×PI)

但是在cocos2d游戏引擎提供的sin(参数值)这里的参数值范围是在[0,1]之间。
利用三角函数的波形来控制小球的运动
关键代码:
头文件:
protected:
float _angle;
cpp实现文件:
_angle = ;
//1、创建一个点
auto dot = DrawNode::create();
dot -> drawDot(Vec2(, ), , Color4F(1.0, 1.0, 1.0, 1.0));
addChild(dot);
dot -> setPosition(origin.x + visibleSize.width/,origin.y + visibleSize.height/);
CCLOG("%f",origin.y + visibleSize.height/);
schedule([dot,this,visibleSize,origin](float f){
//2、写这里代码之前,我们先在头文件中,创建一个成员变量float _angle,用来记录角度
//3、然后我们可以使用这个成员变量,因为需要变换角度或者位置,所以就用set...,这里先变换Y坐标的位置
//4、初始化_angle写到前面
//5、为了能够发生变化,所以需要:
_angle += 0.1;
dot -> setPositionY(sin(_angle)* + origin.y + visibleSize.height/);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
dot -> setPositionX(sin(_angle)* + origin.x + visibleSize.width/);
}, "Test");

当你把schedule里面的两个使用的sin三角函数都换成cos函数,实现的效果是一样的,当你如果一个使用sin,另一个使用cos,就会出现下面的圆周运动的效果:
dot -> setPositionY(sin(_angle)* + origin.y + visibleSize.height/);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
dot -> setPositionX(cos(_angle)* + origin.x + visibleSize.width/);

然后如果要实现椭圆的运动,就需要把×100适当改一下,改其中一个就好:
dot -> setPositionY(sin(_angle)* + origin.y + visibleSize.height/);//这里的sin里面的参数取值范围是[0,1];为了变化更明显,所以×100倍
dot -> setPositionX(cos(_angle)* + origin.x + visibleSize.width/);

Cocos2d入门--2--三角函数的应用的更多相关文章
- 【Cocos2d入门教程六】Cocos2d-x事件篇之触摸
Cocos游戏当中产生一个事件时,可以有多个对象在监听该事件,所以有优先级(Priority).优先级越高(Priority值越小),事件响应越靠前. 关系图: 新 事件分发机制:在2.x 版本事件处 ...
- Cocos2d入门--3--向量的应用
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Cocos2d入门--3--小球运动
本章直接上源代码.内容不难,主要就是 HelloWorldScene.h文件: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H_ ...
- Cocos2d入门--1--初涉相关属性或代码
Cocos2d vision: cocos2d-x-3.8.1 万丈高楼,起于累土.对于一个游戏框架的学习,其实在于框架功能的使用积累,学会了如何在cocos2d游戏引擎的基础上使用它提供的各种功能 ...
- 【Cocos2d入门教程四】Cocos2d-x菜单篇
游戏世界多姿多彩,无论多靓丽的游戏,多耐玩的游戏,在与游戏用户交互上的往往是菜单. 上一章我们已经大概了解了导演.节点.层.精灵.这一章以菜单为主题. 菜单(Menu)包含以下内容: 1.精灵菜单项( ...
- 【Cocos2d入门教程三】HelloWorld之一目了然
什么程序都是从HelloWorld先开始.同样Cocos2d-x我们先从HelloWorld进行下手.下面是HelloWorld的运行完成图: 建立好的Cocos游戏项目中会有两个比较常用接触的文件夹 ...
- 【Cocos2d入门教程八】浅析Cocoss2d下的音频引擎及封装音频类
Cocos2d-x提供了一个音频CocosDenshion引擎,CocosDenshion引擎可以独立于Cocos2d-x单独使用,CocosDenshion引擎本质上封装了OpenAL音频处理库.具 ...
- 【Cocos2d入门教程七】三分钟看懂Cocos2d坐标系
无论是搞2d还是3d开发,最需要搞清楚的就是坐标系,这部分混乱的话就没啥搞头了.所以玩cocos2d,一上来就需要先把各种与坐标有关的东西搞清楚. 1.OpenGL坐标系 Cocos2d-x使用的是O ...
- 【Cocos2d入门教程二】Cocos2d-x基础篇
上一章已经学习了环境的搭建.这一章对基础概念进行掌握.内容大概有: 1.导演 2.场景 3.节点 4.层 4.精灵 1.导演(Director) 导演存在的主要作用: a.环境设定(帧率 初始化ope ...
随机推荐
- Vex – 超轻量!可以轻松自定义的现代风格弹窗插件
Vex 的独特之处在于现代风格设计,能够自定义弹出模式.皮肤.Vex 超轻量,压缩后不到 2KB,提供了简洁的 API,可以根据自己的项目需要快速自定义.支持在移动设备上使用,测试通过的浏览器:IE8 ...
- iOS-图片轮播-SDCycleSCrollView的使用
介绍: SDCycleScrollView 是一款非常强大的轮播图第三方. 轮播流畅,手滑流畅.使用方便.自定义简单. 可以更改pageControl. 一. Demo地址 https://pan.b ...
- HTTP状态码大全(转自wiki)
1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义任何1xx状态码,所以除非在某些试 ...
- 利用百度词典API和Volley网络库开发的android词典应用
关于百度词典API的说明,地址在这里:百度词典API介绍 关于android网络库Volley的介绍说明,地址在这里:Android网络通信库Volley 首先我们看下大体的界面布局!
- 3D拓扑自动布局之Web Workers篇
2D拓扑的应用在电信网管和电力SCADA领域早已习以为常了,随着OpenGL特别是WebGL技术的普及,3D方式的数据可视化也慢慢从佛殿神堂步入了寻常百姓家,似乎和最近高档会所被整改为普通茶馆是一样的 ...
- SQL Server技术问题之自定义函数优缺点
优点: 可以在SQL语句中调用,直接使用返回值,从而可以形成复杂的SQL应用. 缺点: 能在函数中使用的语句有严格限制: 不支持create.ALTER.drop等DDL(Data Definitio ...
- 分析SIX锁和锁分区导致的死锁
什么是SIX锁? 官方文档锁模式中说到: 意向排他共享 (SIX):保护针对层次结构中某些(而并非所有)低层资源请求或获取的共享锁以及针对某些(而并非所有)低层资源请求或获取的意向排他锁. 顶级资源允 ...
- 【Win10】让 TextBlock 按字符换行
要想将 TextBlock 里的文本自动换行的话,只需要设置 TextWrapping 属性为 Wrap 即可. 但是 TextWrapping 是尽可能根据空白字符来换行的,因此,就有可能出现下面这 ...
- jquery选择器(原创)<三>
现在来看看表单域选择器 1.:input选择器 :input选择器,用于选择所有Input,textarea,select和button元素,语法格式如下: $(":input") ...
- LeetCode - 38. Count and Say
38. Count and Say Problem's Link ------------------------------------------------------------------- ...