游戏开发入门02
来源:互联网 发布:微信助力软件 编辑:程序博客网 时间:2024/06/05 18:58
CCAction
对于一个游戏来说,动作是非常重要的,好的动作可以使游戏的可玩性大大提高,在cocos2d引擎中有一个动作类,CCAction是动作类的基类,动作是定义在节点(CCNode)上的,以节点为目标,主要分为两类瞬时动作和延时动作
CCIntervalAction(延时动作)
Cocos2d提供的基本延时类动作都提供了ActionTo和ActionBy两种(七种) :ActionTo是指动作结束的状态,也就是动作的终点。ActionBy是指动作执行的状态,也就是动作的执行过程。常用的延时动作类包括:移动动作:CCMoveBy CCMoveTo缩放动作:CCScaleBy CCScaleTo旋转动作:CCRotateBy CCRotateTo跳跃动作:CCJumpBy CCJumpTo贝赛尔曲线动作:CCBezierBy CCBezierTo淡入淡出动作:CCFadeTo CCFadeIn CCFadeOut
移动(CCMoveBy与CCMoveTo)创建对象:利用CCMoveBy(To).action(float duration, CGPoint pos) 。参数说明: duration持续时间,pos代表目标点不同点:①CCMoveBy指定的CGPoint 是相对坐标即相对于当前的需要移动的精灵。 CCMoveTo指定CGPoint 是绝对坐标。② CCMoveBy将reverse()方法进行了处理,而CCMoveTo返回null值。当我们需要实现精灵的反复移动时使用CCMoveBy将很轻松的完成。应用场景:如游戏过关后会有一个箭头反复提示你前进的路线。首先我们需要使用CCSequence将一组移动的效果添加到一起,实现单次往返,再利用CCRepeatForever实现反复动作。示例代码:private void moveBy() { CCSprite sprite = getSprite(); // 参数1 移动的时间 单位秒 参数2 移动的目的地 CCMoveBy ccMoveBy=CCMoveBy.action(2, CCNode.ccp(400, 440)); CCMoveBy reverse = ccMoveBy.reverse(); CCSequence actions = CCSequence.actions(ccMoveBy, reverse); sprite.runAction(actions);}private void moveTo() { CCSprite sprite = getSprite(); // 参数1 移动的时间 单位秒 参数2 移动的目的地 CCMoveT
弹跳(CCJumpBy与CCJumpTo)创建对象: CCJumpBy (To).action(float time, CGPoint pos, float height, int jumps)参数说明: time代表持续时间, pos代表目标点, height代表回落高度,jumps代表跳动次数区别: CCJumpBy将 reverse()方法进行了处理,可以用于实现重复动作;private void jumpBy() { CCSprite sprite = getSprite(); //参数1:时间 参数2:跳到的点 参数3:跳的最高点 参数4:跳的次数 CCJumpBy ccJumpBy=CCJumpBy.action(3, CCNode.ccp(300, 300), 500, 10); CCJumpBy reverse = ccJumpBy.reverse(); CCSequence actions = CCSequence.actions(ccJumpBy, reverse); sprite.runAction(actions);}
缩放(CCScaleBy与CCScaleTo)创建对象:CCScaleBy(To).action(float t, float s)参数说明:t代表持续时间,s代表缩放比例区别: CCScaleBy将 reverse()方法进行了处理,可以用于实现重复动作应用场景:心跳private void scaleBy() { // 参数1 时间 参数2 缩放的比例 CCScaleBy ccScaleBy=CCScaleBy.action(1f, 1.65f); //基于锚点进行缩放 CCScaleBy reverse = ccScaleBy.reverse(); CCSequence sequence=CCSequence.actions(ccScaleBy, reverse); CCRepeatForever forever=CCRepeatForever.action(sequence);//无限循环 getHeart().runAction(forever);}
贝塞尔曲线运动(CCBezierBy)创建对象:CCBezierBy(To).action(float t, CCBezierConfig c)参数说明: t代表持续时间, c曲线参数, CCBezierConfig.controlPoint_1起始点、CCBezierConfig.controlPoint_2顶点、CCBezierConfig.endPosition终点应用场景:子弹,pvz中屋顶关卡private void bezierBy() { CCBezierConfig c=new CCBezierConfig(); c.controlPoint_1=ccp(0, 0); c.controlPoint_2=ccp(300, 300); c.endPosition=ccp(500, 0); CCBezierBy bezierBy=CCBezierBy.action(2, c); getSprite().runAction(bezierBy);}
渐快(CCEaseIn)对象创建:CCEaseIn.action(CCIntervalAction action, float rate)参数说明: action被控制的动作, rate加速度,如果为1就匀速了 渐慢:CCEaseOut与CCEaseIn参数一致,动作相反private void ease() { CCMoveTo ccMoveTo=CCMoveTo.action(10, CCNode.ccp(200, 0)); CCEaseIn easeOut=CCEaseIn.action(ccMoveTo,3); // 让移动按照有一定加速度去移动 getSprite().runAction(easeOut);}
旋转(CCRotateBy与CCRotateTo)创建对象:CCRotateBy(To).action(float t, float a)参数说明:t代表持续时间,a代表旋转角度区别:① CCScaleBy将 reverse()方法进行了处理,可以用于实现重复动作;② CCRotateTo以最便捷的方式旋转到指定角度,如旋转角度为300时,使用CCRotateTo来实现的话会逆时针旋转60度应用场景:进度条旋转、旗子的左右摆动等特别注意:旋转动作是沿着锚点完成的,所以需要结合锚点统一协调旋转动作
颜色渐变动作(CCTintBy与CCTintTo)创建对象: CCTintBy(To). action(float t, ccColor3B c)参数说明:t:时间间隔, c:RGB三色值封装对象区别:① CCTintBy对reverse()方法实现;② CCTintBy需要设置的RGB三色值是相对值,即相对于当前的RGB值进行变动。应用场景private void tint() { // 专门显示文字的精灵 // 参数1 显示的内容 参数2 字体的样式 3 字体的大小 CCLabel label=CCLabel.labelWithString("夏浩轩 ,那些年在陌陌约到的妹子", "hkbd.ttf", 24); label.setColor(ccc3(50, 0, 255)); label.setPosition(200,200); this.addChild(label); ccColor3B c=ccc3(100, 255, -100); // 参数1 时间 参数2 变化后的颜色 CCTintBy by=CCTintBy.action(1, c); CCTintBy reverse = by.reverse(); CCSequence actions = CCSequence.actions(by, reverse); CCRepeatForever forever=CCRepeatForever.action(actions); label.runAction(forever);}
闪烁(CCBlink)对象创建:CCBlink.action(float t, int b)参数说明:t间隔时间,b闪烁次数private void blink() { // 三秒钟闪烁3次 CCBlink blink=CCBlink.action(3, 3); getSprite().runAction(blink);}
播放序列帧CCAnimation加载CCAnimate如果要停止播放,可以采用stopAction
连续动作CCSequence对象创建:CCSequence.actions(CCFiniteTimeAction action1, CCFiniteTimeAction... actions)对象说明:用于按顺序执行一连串动作
并发动作CCSpawn对象创建:CCSpawn.actions(CCFiniteTimeAction action1, CCFiniteTimeAction... params)参数说明:指定一连串动作同时触发,如在跳跃过程中执行一个翻转动作。
间歇动作(CCDelayTime)对象创建:CCDelayTime. action(float t)参数说明:t 停止时间
即时动作(CCInstantAction)
瞬时动作:就是不需要时间,马上就完成的动作。Cocos2d提供以下瞬时动作:放置 – Place效果类似于 node.Position = ccp(x, y)。之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。隐藏 – Hide效果类似于 [node setVisible:NO]. 之所以作为一个劢作来实现是为了可以与其他动作形成一个连续动作。显示 – Show效果类似于 [node setVisible:YES]. 之所以作为一个动作来实现是为了可以与其他动作形成一个连续动作。可见切换 – ToggleVisibility
可见性(CCHide与CCShow )对象创建:调用action方法即可,无参数
无限动作CCRepeatForever无限制的执行一个延时动作,通常用于连续执行一连串的重复动作,这些动作多放置在CCSequence中进行定义。
SoundEngine处理声音声音类型:音乐和音效可以从长短上来做区分,音乐一般用于游戏的背景声音,音效主要是短小的声音,如植物发射子弹,僵尸吃植物时发出的声音声音控制,如播放、暂停、声音大小调节、静音通过缓存音乐和音效文件来提高声音处理的效率
源码:http://download.csdn.net/detail/qq_27280457/9612812
1 0
- 游戏开发入门02
- DirectX游戏开发入门
- 游戏开发入门参考
- 游戏服务端开发入门
- android 游戏开发入门
- android 游戏开发入门
- android 游戏开发入门
- 游戏开发入门参考
- 游戏开发入门
- 游戏开发入门
- 游戏开发入门
- Android 游戏开发入门
- 游戏开发入门01
- 游戏开发入门03
- 游戏引擎与游戏引擎开发入门
- DX游戏开发入门[转]
- 游戏开发入门图书推荐
- 游戏开发入门图书推荐
- Android 开机时间慢问题debug
- 无线轮播
- HDU 4034 Graph
- go 语言精华学习贴
- 不可重现的bug如何处理
- 游戏开发入门02
- 常用类和方法
- 如何处理高并发情况下的DB插入
- SAMKeychain用户信息加密
- JS 通用格式写法
- asp.net EF 处理模型更改
- 安卓缓存之LruCache及设计(异步+缓存)图片加载器LruCacheImageLoader
- Django在OS X下的编程实战(一)构建一个博客系统
- C# Lambda表达式