游戏开发平台Cocos2Dx中的动作特效与动画课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《游戏开发平台Cocos2Dx中的动作特效与动画课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 游戏 开发 平台 Cocos2Dx 中的 动作 特效 动画 课件
- 资源描述:
-
1、游戏开发平台Cocos2D-xocos2d-X中的动作特效与动画2019/3/8xxxxxxxxxx12019/3/8xxxxxxxxxx2Cocos2D-x的基础类,包括节点类CCNode、导演类CCDirector、场景类CCScene、布景层、CCLayer和精灵类CCSprite等。这些类都是构成游戏画面的基本元素。但是游戏不仅是由静态画面构成的,更多时候,游戏是动态效果的呈现,所以动作、特效和动画是游戏区别于应用的特点,又是决定游戏质量的关键一环。因此,决定一个二维游戏引擎的好坏的重要因素是引擎对动作、特效和动画的支持程度。动作类2019/3/8xxxxxxxxxx3Cocos2D-
2、x的动作类CCAction并不是一个在屏幕中显示的对象,动作必须要依托于CCNode类及它的子类的实例才能发挥作用。C0C0S2D-x的动作包括位置移动、跳跃,甚至是对象颜色的渐变。CCAction类继承于对象类CCObject,有三个子类:有限时间动作、跟随、移动速度,其中有限时间动作分为瞬时动作(CCActionlnstant)和延时动作(CCActionlnterval)。CCAction 的主要函数2019/3/8xxxxxxxxxx42019/3/8xxxxxxxxxx5CCAction的子类CCFiniteTimeAction分为瞬时动作(CCActionlnstant)和延时动作
3、bCCActionlnterval)移动动作2019/3/8xxxxxxxxxx6Void ActionMove:onEnter()ActionsDemo:onEnter();centerSprites(3);CCSizes=CCDirector:sharedDirector()-getWinSize();CCActionlnterval*actionTo=CCMoveTo:create(2,CCPointMake(s.width-40,s.height-40);CCActionlnterval*actionBy=CCMoveBy:create(2,CCPointMake(80,80);CCA
4、ctionlnterval*actionByBack=actionBy-reverse;);_tamara-runAction(actionTo);_grossini-runAction(CCSequence:create(actionBy,actionByBack,NULL);_kathia-runAction(CCMoveTo:create(1,CCPointMake(40,40);以上分别定义了CCMoveTo和CCMoveBy的实例。之前已经说过CCMoveBy是MoveTo的子类,CCMoveTo是移动到目标位置,而CCMoveB.是次目前位置的基础上移之到目标位置。创建函数crea
5、te的第一个参数是时间,第二个参数是位置对象。动作调用reverse函数会返回另外一个动作,使这个动作倒置,而精灵类实例在调用runAction函数时也会有不同,m_grossini精灵使用的就是动作序列CCSequence。CCSequence动作序列的定义由多个动作构成,create函数中以NULL参数作结尾,效果是作为参数传入的动作会颐序执行。缩放动作2019/3/8xxxxxxxxxx7Void ActionScale:onEnter()ActionsDemo:onEnter();centerSprites(3);CCActionlnterval*actionTo=CCScaleTo:
6、create(2.Of,0.5f);CCActionlnterval*actionBy=CCScaleBy:create(2.Of/l.Of,lO.Of);CCActionlnterval*actionBy2=CCScaleBy:create(2.Of,5.Of,l.Of;m_grossini-runAction(actionTo);m_tamara-runAction(CCSequence:create(actionBy,actionBy-reverse(),NULL);m_kathia-runAction(CCSequence:create(actionBy2,actionBy2-reve
7、rse(),NULL);以上分别定义了CCScaleTo和CCScaleBy的实例。之前已经说过CCScaleBy是CCScaleTo的子类,CCScaleTo是缩放到相应比例,CCScaleBy是在目前基础上变化相应的缩放比例。create函数可以使用两个参数或者三个参数。两个参数的第一个参数是时间间隔,第二个参数是缩放比例。三个参数的第一个参数是时间间隔,第二个参数是x轴缩放比例,第三个参数是y轴缩放比例。扭曲动作2019/3/8xxxxxxxxxx8Void ActionSkew:onEnter()ActionsDemo:onEnter();centerSprites(3);CCActi
8、onlnterval*actionTo=CCSkewTo:create(2,37.2f,-37.2f);CCActionlnterval*actionToBack=CCSkewTo:create(2,0,0);CCActionlnterval*actionBy=CCSkewBy:create(2,O.Of,-90.Of);CCActionlnterval*actionBy2=CCSkewBy:create(2,45.Of,45.0f);CCActionlnterval*actionByBack=actionBy-reverse();m_tamara-runAction(CCSequence:c
9、reate(actionTo,actionToBack,NULL);M_grossini-runAction(CCSequence:create(actionBy,actionByBack,NULL);m_kathia-runAction(CCSequence:create(actionBy2,actionBy2-reverse(),NULL);以上分别定义了CCSkewTo和CCSkewBy是实例。之前已经说过CCSkewBy是CCSkewTo的子类。二者关系和之前类似,以By结尾的参数是相对于目前值的过程量,以To结尾的参数是绝对的参数,不管现有状态如何,直接设置为参数的这个值。三个参数的
10、第一个参数是时间间隔,第二个参数是x轴扭曲参数,第三个参数是y轴扭曲参数。旋转动作2019/3/8xxxxxxxxxx9voidActionRotate:onEnter()ActionsDemo:onEnter();centerSprites(3);CCActionlnterval*actionTo=CCRotateTo:create(2,45);CCActionlnterval*actionTo2=CCRotateTo:create(2,-45);CCActionlnterval*actionToO=CCRotateTo:create(2,0);m_tamara-runAction(CCSe
11、quence:create(actionTo,actionToO,NULL);CCActionlnterval*actionBy=CCRotateBy:create(2,360);CCActionlnterval*actionByBack=actionBy-reverse();M_grossini-runAction(CCSequence:create(actionBy,actionByBack,NULL);m_kathia-runAction(CCSequence:create(actionTo2,actionToO-copy()-autorelease(),NULL);以上分别定义了CCR
12、otateTo和CCRotateBy的实例。之前已经说过CCRotateBy是CCRotateTo的子类,二者关系和之前类似。两个参数的第一个参数是时间间隔,第二个参数是旋转角度,这里的角度表示采用角度制。跳转动作2019/3/8xxxxxxxxxx10voidActionJump:onEnter()ActionsDemo:onEnter();centerSprites(3);CCActionlnterval*actionTo=CCJumpTo:create(2,CCPointMake(300,300),50,4);CCActionlnterval*actionBy=CCJumpBy:crea
13、te(2,CCPointMake(300,0),50,4);CCActionlnterval*actionUp=CCJumpBy:create(2,CCPointMake(0,0),80,4);CCActionlnterval*actionByBack=actionBy-reverse();m_tamara-runAction(actionTo);m_grossini-runAction(CCSequence:create(actionBy,actionByBack,NULL);m_kathia-runAction(CCRepeatForever:create(actionUp);以上分别定义
14、了CCJumpTo和CCJumpBy的实例。之前已经说过CCJumpTo是CCJumpBy的子类,二者关系和之前类似。四个参数的第一个参数是时间间隔,第二个参数CCJumpTo的是目标位置的绝对坐标,CCJumpBy的是相对于目前位置的相对坐标,第三个参数为跳跃高度,第四个参数是跳跃的次数。贝塞尔曲线动作2019/3/8xxxxxxxxxx11voidActionBezier:onEnter()ActionsDemo:onEnter();CCSizes=CCDirector:sharedDirector()-getWinSize();centerSprites(3);ccBezierConfi
15、gbezier;bezier.controlPoint_l=CCPointMake(0,s.height/2);bezier.controlPoint_2=CCPointMake(300,-s.height/2);bezier.endPosition=CCPointMake(300,100);CCActionlnterval*bezierForward=CCBezierBy:create(3,bezier);CCActionlnterval*bezierBack=bezierForward-reverse();CCAction*rep=CCRepeatForever:create(CCActi
16、onlnterval*)CCSequence:create(bezierForward,bezierBack,NULL);m_tamara-setPosition(CCPointMake(80,160);ccBezierConfigbezier2;bezier2.controlPoint_1=CCPointMake(100,s.height/2);bezier2.controlPoint_2=CCPointMake(200,-s.height/2);bezier2.endPosition=CCPointMake(240,160);CCActionlnterval*bezierTol=CCBez
17、ierTo:create(2,bezier2);m_kathia-setPosition(CCPointMake(400,160);CCActionlnterval*bezierTo2=CCBezierTo:create2,bezier2);m_grossini-runAction(rep);m_tamara-runAction(bezierTo1);m_kathia-runAction(bezierTo2);2019/3/8xxxxxxxxxx12 ccBezierConfig的三个参数需要配置,前两个是控制点,最后一个是终点。其中终点在CCBezierTo和CCBezierBy两个类中的运
18、行结果不同,依然是CCBezierTo的终点是绝对位置,而CCBezierBy是相对于目前位置的相对位置。控制点的设置分别控制在路径上的高峰和低谷的位置。如果走的路径与图中方向一致,苎两个控制点的纵坐标设置为一正一负。控制点纵坐标的正负决定是向下走还是向上绝对值决定移动的幅度。而横坐标是横坐标方向的移动,该值对于CCBezierBy是相对于目前位置的相对位置,于CCBezierTo的终点是绝对位置。如果需要图中曲线旋转90度的路径,就把两个控制点的横坐标分别设置为一正一负即可,然后交换x轴和y轴的要求 CCBezierTo和CCBezierBy都是贝塞尔曲线动作。create函数没有什么区别,
19、都是两个参数,第一个参数依然是动作时间,第二个参数是贝塞尔曲线的配置系数。.贝塞尔曲线是应用于二维图形应用程序的数学曲线,每一个顶点都有两个控制点,用于控制该顶点两侧曲线的弧度淡入淡出动作2019/3/8xxxxxxxxxx13Void ActionFade:onEnter()ActionsDemo:onEnter();centerSprites(2);m_tamara-setOpacity(0);CCActionlnterval*actionl=CCFadeln:actionWithDuration(l.Of);CCActionlnterval*actionlBack=actionl-rev
20、erse();CCActionlnterval*action2=CCFadeOut:actionWithDuration(l.Of);CCActionlnterval*action2Back=action2-reverse();m_tamara-runAction(CCSequence:actions(actionl,actionlBack,NULL);m_kathia-runAction(CCSequence:actions(action2,action2Back/NULL);std:StringActionFade:subtitle()returnFadeln/FadeOut;这里需要说明
21、的是,淡入首先要将不透明度设置为0。闪烁动作2019/3/8xxxxxxxxxx14voidActionBlink:onEnter()ActionsDemo:onEnter();centerSprites(2);CCActionlnterval*actionl=CCBlink:actionWithDuration(2,10);CCActionlnterval*action2=CCBlink:actionWithDuration(2,5);m_tamara-runAction(actionl);m_kathia-runAction(action2);色值渐变动作2019/3/8xxxxxxxxx
22、x15voidActionTint:onEnter()ActionsDemo:onEnter();centerSprites(2);CCActionlnterval*actionl=CCTintTo:actionWithDuration(2,255,0,255);CCActionlnterval*action2=CCTintBy:actionWithDuration(2,-127,-255,-127);CCActionlnterval*action2Back=action2-reverse();m_tamara-runAction(actionl);m_kathia-runAction(CCS
23、equence:actions(action2,action2Back/NULL)以上分别定义了CCTintTo和CCTintBy的实例,第一个参数是动作时间,后三个参数分别是颜色的R、G、B值。CCTintTo是直接设置色值,CCTintBy是在目前值上加上相应的值。摄像机动作类2019/3/8xxxxxxxxxx16第3章介绍了摄像机类CCCamera,动作中也有一个摄像机动作类CCOrbitCamera,它是摄像机环绕屏幕中心旋转所形成的动作。voidActionOrbit:onEnter()ActionsDemo:onEnter();centerSprites(3);CCActionl
24、nterval*orbit3=CCOrbitCamera:create(2,1,0,0,180,90,0);CCFiniteTimeAction*action3=CCSequence:create(orbit3,orbit3-reverse(),NULL);m_kathia-runAction(CCRepeatForever:create(CCActionlnterval*)actionl);m_tamara-runAction(CCRepeatForever:create(CCActionlnterval*)action2);m_grossini-runAction(CCRepeatFore
25、ver:create(CCActionlnterval*)action3);CCActionlnterval*move=CCMoveBy:create(3,CCPointMake(100,-100);CCActionlnterval*move_back=move-reverse();CCFiniteTimeAction*seq=CCSequence:create(move,move_back,NULL);CCAction*rfe=CCRepeatForever:create(CCActionlnterval*)seq);m_kathia-runAction(rfe);m_tamara-runA
展开阅读全文