4.3.1 位置变化动作
来源:互联网 发布:矩阵计算法则 编辑:程序博客网 时间:2024/05/17 08:00
4.3.1 位置变化动作
《Cocos2d-x高级开发教程》第4章动作,在这一章中,我们将为大家详细介绍各种动作的使用方法。读完本章后,读者将会学到《捕鱼达人》游戏中的基本动作机制:鱼的各种游动动作、炮弹的发射动作、渔网的展开动作,以及金币的收集等各种其他动作效果。本节为大家介绍位置变化动作。
AD:2013云计算架构师峰会超低价抢票中
4.3.1 位置变化动作
针对位置(position)这一属性,引擎为我们提供了3种位置变化动作类型,下面将简要介绍这几种动作。
CCMoveTo和CCMoveBy:用于使节点做直线运动。设置了动作时间和终点位置后,节点就会在规定时间内,从当前位置直线移动到设置的终点位置。它们的初始化方法分别为:
- CCMoveTo::create(ccTime duration, CCPoint& pos);
- CCMoveBy::create(ccTime duration, CCPoint& pos);
其中,duration参数表示动作持续的时间,pos参数表示移动的终点或距离。对于CCMoveTo,节点会被移动到pos对应的位置;对于CCMoveBy,节点会相对之前的位置移动pos的距离。
CCJumpTo和CCJumpBy:使节点以一定的轨迹跳跃到指定位置。它们的初始化方法如下:
- CCJumpTo::create(ccTime duration, CCPoint pos, float height, int jumps);
- CCJumpBy::create(ccTime duration, CCPoint pos, float height, int jumps);
其中pos表示跳跃的终点或距离,height表示最大高度,jumps表示跳跃次数。
CCBezierTo和CCBezierBy:使节点进行曲线运动,运动的轨迹由贝塞尔曲线描述。贝塞尔曲线是描述任意曲线的有力工具,在许多软件(如Adobe Photoshop)中,钢笔工具就是贝塞尔曲线的应用。实际上,在《捕鱼达人》游戏中,为了控制鱼的游动,我们就用到了贝塞尔曲线。
每一条贝塞尔曲线都包含一个起点和一个终点。在一条曲线中,起点和终点都各自包含一个控制点,而控制点到端点的连线称作控制线。控制线决定了从端点发出的曲线的形状,包含角度和长度两个参数:角度决定了它所控制的曲线的方向,即这段曲线在这一控制点的切线方向;长度控制曲线的曲率。控制线越长,它所控制的曲线离控制线越近。示例图如图4-1所示。
任意一段曲线都可以由一段或几段相连的贝塞尔曲线组成,因此我们只需考虑一段贝塞尔曲线应该如何描述即可。一段独立的贝塞尔曲线如图4-2所示。
使用时我们要先创建ccBezierConfig结构体,设置好终点endPosition以及两个控制点controlPoint_1和controlPoint_2后,再把结构体传入CCBezierTo或CCBezierBy的初始化方法中:
- ccBezierConfig bezier;
- bezier.controlPoint_1 = ccp(20, 150);
- bezier.controlPoint_2 = ccp(200, 30);
- bezier.endPosition = ccp(160, 30);
- CFiniteTimeAction * beizerAction = CCBezierTo::create(actualDuration / 4, bezier);
- http://book.51cto.com/art/201305/394771.htm
- 4.3.1 位置变化动作
- cocos2dx 3.1.1中EaseRateAction动作类的变化
- [cocos2dx动作]CCLabel类数字变化动作
- Cocos2d-x 属性变化动作
- android 监听位置变化
- 关于xcode6位置变化
- Spinner弹出位置变化
- 获取位置变化状态
- Emulator Control位置的变化
- TextView指定位置颜色变化
- scratch学习笔记1——动作积木及角色位置关系
- div位置大小不随浏览器变化而变化
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-速度变化
- 【iOS-Cocos2d游戏开发】Cocos2d-iPhone动作Action-速度变化
- [Quick-x lua]CCLabel类数字变化动作
- cocos2D v3.x中动作回调函数的变化
- jquery判断input内的值变化时触发动作?
- 关于Android GPS 的 监听位置变化的函数的研究(1)
- pkginfo、pkgadd和pkgrm命令的用法
- ubuntu下更改分辨率
- [Matlab]科研中的心得(updating)
- linux永久添加新路径
- 经典收藏 50个jQuery Mobile开发技巧集萃
- 4.3.1 位置变化动作
- Memcache相关
- CCMoveBy和CCMoveTo有什么区别?
- android soundrecorder之一 linux alsa 音频架构
- Eclipse 配置 Heritrix 1.14.4
- 如何用Java进行3DES加密解
- DisplayObject简介
- Android源码架构介绍
- mvc jquery 表单提交