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

客服QQ:3315713922

塔防游戏必备 Cocos2D-X中动画加减速基本教程

作者:课课家教育     来源: http://www.kokojia.com点击数:1021发布时间: 2019-04-12 10:12:44

标签: Cocos2D-X减速Cocos2D-X塔防Cocos2D-X教程

  在塔防游戏中我们经常会看到动画减速与加速的应用,这些效果在游戏开发中要怎么制作呢?本篇教程将以塔防游戏为例讲解Cocos2d-x中动画加减速问题。

  动画是游戏的必然要素之一,在整个游戏过程中,又有着加速、减速动画的需求。以塔防为例子,布塔的时候希望能够将游戏减速,布好塔后,则希望能将游戏加速;当某个怪被冰冻后,移动速度减缓,而其他怪的移动速度不变。cocos2d-x引擎为我们提供了很强大的接口,下面就将我实验的过程复述一遍,也方便他人。

  1)实现全局的加速、减速。

  通过设置Scheduler的timeScale,可以实现全局的加、减速。代码非常简单:

  塔防游戏必备 Cocos2D-X中动画加减速基本教程_Cocos2D-X减速_Cocos2D-X塔防_Cocos2D-X教程_课课家

  2)实现对某个CCActionInterval动作的加速、减速

  方法一:很容易想到的一个方法就是改变CCAnimation的delay unit。代码如下:

  

  这个方法有一个缺点:改变了CCAnimationCache中这个animation的delay unit。也就是说以后即使再从CCAnimationCache中获取这个animation,其delay unit已经是原来的0.2倍了。

  方法二:cocos2d-x提供了CCSpeed的类,可以实现动画速度的调节。用法如下:

  

  注意,如果pSprite有已经运行的动作,要用pSprite->stopActionByTag()停掉之前的动作,不然两个动作就叠加到一起了。

  3)对某个CCFiniteTimeAction类型动作的加速、减速

  大部分时候,一个游戏人物的动作并非由单一一个CCActionInterval类型的动作构成,而是一串动作连起来,构成一个Sequence。 用CCSequence::create(…)创建的对象都是CCFinteTimeAction类型的,CCSpeed并不适用。在CCSpeed类的说明里,明确指 出”This action can’t be Sequenceable because it is not an CCIntervalAction”。 那对于Sequence就束手无策了吗?非也。cocos2d-x引擎自带例子中,schedulerTest给我们展示了如何控制某个sprite的 scheduler的timescale。废话少说,直接看代码。

  在class TwoSchedulers中定义了两个customer的scheduler和两个CCActionManager。

  

  通过以上的代码,就可以通过改变sched1的timescale来改变pSprite1的动作的快慢了。有了这种方法,那么就可以放弃CCSpeed的那种方法了。

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