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 ...
随机推荐
- 基于kubernetes构建Docker集群管理详解-转
http://blog.liuts.com/post/247/ 一.前言 Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度 ...
- selenium webdriver (python) 第三版
感谢 感谢购买第二版的同学,谢谢你们对本人劳动成果的支持!也正是你们时常问我还出不出第三版了,也是你们的鼓励,让我继续学习整理本文档. 感谢乙醇前辈,第二版的文档是放在他的淘宝网站上卖的,感谢他的帮忙 ...
- Repository模式中,Update总是失败及其解析
在Repository模式中,我的Update方法总是无法更新实体,这个非常郁闷,Update方法如下: 1: public virtual void Update(T entity) 2: { 3: ...
- Travis-CI与Latex构建开源中文PDF
博主有一本开源书籍,用 latex 排版,托管在Github上.但用 latex 不像是 Markdown,当tex文本更新时,用于最终浏览的PDF文件很难得到及时的更新, 所以博主一直想找到一套工具 ...
- 关于URL、Web的一些概念
关于URL ★ 书写路径时,网络文件用斜杠“/”划分不同层级,本地文件管理系统用反斜杠“\”,分隔不同层级: 如下图示 ★ 绝对/相对 ...
- WinForm给控件加入hint文字
本文代码主要是参考别人的,仅为个人记录,方面后续使用~ 效果图: 主要代码在一个Win32Utility类中,代码如下: public static class Win32Utility { [Dll ...
- 雷军V5,米3横空出世
小米3 下午两点,小米CEO:雷军(也是一个传奇人物),虽然没购买门票,只是自己一个人看微博,看新闻,还是了解到了小米3的面貌,这次雷哥还给大家带来了MITV,售价¥2999!(无法相信)顶配.这次我 ...
- JavaMail入门第三篇 发送邮件
JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送任务,这个类的实例对象封装了某种邮件发送协议的底层实施细节,应用程序调用这个类中的方法就可以把Mes ...
- Win7下安装依赖lxml的python插件
博主python菜鸟,本想在win7下安装一个pyquery玩玩爬虫,折腾了好几天终于搞好了,发现python这坑不是一般的深啊. 有一部分没有截图,请谅解 python版本3.4 1.下载easy_ ...
- springmvc+mybatis+spring 整合 bootstrap
获取[下载地址] [免费支持更新]三大数据库 mysql oracle sqlsever 更专业.更强悍.适合不同用户群体[新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统] ...