下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

塔防游戏必备:用CCSpeed实现动画慢动作以及游戏加减速进行

作者:课课家教育     来源: http://www.kokojia.com点击数:2084发布时间: 2019-04-08 10:05:13

标签: Cocos2D-X减速Cocos2D-X游戏开发Cocos2D-X

  我们在游戏开发中有时会需要实现游戏动画的慢动作或游戏加减速运行,这又要如何实现呢?本篇教程将解析怎么用CCSpeed实现动画慢动作以及游戏加减速进行。

  本篇知识点有两个:

  1.利用CCSpeed当精灵执行CCAnimate动作途中设置其播放的速度;

  2.设置游戏的速率,让你自由设置整个游戏的速度;

  首先介绍第一个知识点:

  对于第一个知识点,精灵执行CCAnimate动作途中设置播放速度,说白一点就是当主角或者怪物播放一套帧动作(动画)的时候,可能突然受到其他因素影响希望主角或者怪物等动作放慢,也就是慢动作的感觉,那么这时候我们就需要设置动作的播放速度拉,也就是今天要介绍的CCSpeed这个类;可能这里哇哇哇的说这么多还是没听太明白吧...那么下面我们来看看代码等就应该明白了;

  直接上一段代码如下:

 塔防游戏必备:用CCSpeed实现动画慢动作以及游戏加减速进行_Cocos2D-X减速_Cocos2D-X游戏开发_Cocos2D-X_课课家

  以上代码创建一个帧动画(帧资源都在animationFrames.plist加载到内存中了),然后创建一个精灵并让其永久循环执行这个帧动画;

  童鞋们想一想,如果在这个永久动作执行后,你想在一个任意时间设置这个动画播放的速度,那么就利用CCSpeed来实现了,代码如下:

 

  这段代码和第一段代码不同点就是第二段将CCRepeatForever永久动作又包装到了CCSpeed中,整个动作等同与交给了CCSpeed来控制了,那么下面我还设置了[speed setTag:888];这个是留出接口,当你需要设置整个CCSpeed包装的动作速度的时候利用tag获取到,这个大家肯定很熟悉,那么获取动作方式如下:

  view plain copyCCSpeed *speed=(CCSpeed*)[sprite getActionByTag:88];

  获取的时候是你之前runAction的精灵来利用getActionByTag来获取的!

  那么下面继续添加代码,我们让一个由CCSpeed包装一个帧动画并让精灵执行后的5秒后让其速度变成原有播放速度的一半,代码如下:

 

  CCSpeed的创建很简单,那么设置速率的方法如下:

  view plain copy[CCSpeed* setSpeed:XX];

  这里的XX参数指的是倍率,传入1表示原速,大于1表示增快,小于1表示放慢速度~

  下面直接给出全部测试项目代码:

 

  运行截图如下: (图片中有个"左"写错了,应该是"右")

 

  从截图中可能童鞋们看不出什么效果。等文章最后放出源码,大家运行就可以看到效果了。

  这里备注下:除了利用CCSpeed来实现慢动作之外,还有其他的一些方法,不怕麻烦的童鞋甚至可以尝试当需要慢动作的时候,取出当前的帧下标,然后利用指定帧下标的方法创建一个新的帧动画同时增加播放时间即可;再或者直接去修改Cocos2d-iphone引擎的源码;

  当时做的时候因为用CCSpeed方式有问题一直不行,就去改了源码弄的。后来才发现CCSpeed正确用法,我去了。

  这里必须强调一点!!!!!!!

  很多时候你的主角的动作利用CCAction来实现,移动则是在update刷帧函数或者一些选择器的方法中进行的,那么为了让你的主角慢动作比较逼真,那么建议不要使用scheduleUpdate函数,因为这个你无法修改每次调用update的时间默认都是每帧都调用,那么你应该自己定义一个选择器当刷逻辑的函数,这样就能配合CCSpeed实现逼真慢动作拉~

  下面我们来介绍第二个知识点:设置游戏速度

  对于游戏速度最常见的出现在塔防游戏中,当玩家创建好防守的东东后开始出怪后,可能怪物移动速度慢,而玩家着急看到结果,那么我们就会人性化的加上加快游戏速度的按钮拉~那么这个功能在Cocos2d引擎中封装好的,一句代码即可完成,如下代码即可:

  view plain copy[[CCScheduler sharedScheduler] setTimeScale:XX];

  这里的XX仍然是倍率:传入1表示原速,大于1表示增快,小于1表示放慢速度~

赞(12)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程