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

客服QQ:3315713922

教你在Cocos2D-X中如何开发一个打地鼠游戏(下)

作者:课课家教育     来源: http://www.kokojia.com点击数:838发布时间: 2019-03-29 15:10:00

标签: Cocos2D-X网游游戏开发Cocos2D-X教程

  上半部分教程中我们简单实现了打地鼠游戏的雏形,本篇教程将教你制作打地鼠游戏的行为动画及完成其他后续步骤。

  在游戏开发的过程中,一个好的游戏需要很多次的调试和长时间打磨,才能成为有趣的产品,而不是一段段的代码,前面一篇中使用了最简单的方式生成了静态界面,这次我们将整合动画着重使用CCActionInterval派生出来的各种行为类做出有趣的游戏,那么现在开始吧。

  行为动画

  CCActionInterval是Cocos2d中常用的行为类,它的派生类分管各种不同对象,产生不同的结果,这个模式在一些游戏引擎中有的叫做脚本,有的叫做控制器,刚开始用的时候可能有点晕,但是随着使用次数的增加就会越来越熟悉,今天我将使用到如下几个行为来实现游戏的动画效果:

  CCDelayTime:延迟行为,它仅仅是一个定时器,设定好时间,行为会在指定的时间后结束

  CCAnimate和CCAnimation:动画行为类,它们组合在一起可以控制一个CCSprite的帧动画

  CCCallFunc:呼叫行为类,指定一个回调函数,执行的时候就会调用

  CCSequence:行为队列类,它可以将几个行为组合起来,这样就不需要定时的去判断逻辑了,比如一个延迟行为加上回调行为,就会达到在延迟指定时间后回调指定函数的效果

  除了这些还有很多有用的行为类,但是仅用这些就已经足够了。

  例如下面的代码:

  CCDelayTime delayTime = CCDelayTime.actionWithDuration(DelaySecond);

  delayAction = CCSequence.actionOnetwo(delayTime, CCCallFunc.actionWithTarget(this, showCompled));

  this.runAction(delayAction);

  这个代码换成图片表示则是这样的

  如果仔细看过你会发现CCSequence也是一个CCActionInterval,它的作用就是将多个行为组合起来达到连贯,这是一个很有趣的方法,你能用它做很多有趣的行为,上面代码中为延迟DelaySecond秒之后回调showCompled方法,在最后的代码中你会发现这种方式被用了三次在不同的地方达到不同的效果。

  那么,除了延迟,还有动画也可以组合,这样我们可以很准确的知道某个动画结束后的事件,例如:

  //钻出动画

  CCAnimation marmotShowanimation = CCAnimation.animationWithFrames(frames,0.1f);

  CCAnimate action = CCAnimate.actionWithAnimation(marmotShowanimation, false);

  showAction = CCSequence.actionOneTwo(action, CCCallFunc.actionWithTarget(this, callback));

  body.runAction(showAction);

  这个代码的意思是通过frames帧序列创建一个动画行为,然后使用Animate嵌套使其播放,执行的目标是body这个CCSprite,当播放结束之后就会执行callback方法。

  行为动画在游戏当中举足轻重,本例中使用的是最简单的单个图片序列的方式播放,其实,使用cocos2d的动画plist更加简便,但是单来说设计工具就比较繁琐,因此我计划在后面篇章专门说动画的制作和代码。

  文字显示

  在现在cocos2dxna版本中还不能直接显示文字和其他的平台状况差不多,显示英文和数字可以使用其他版本方法,这方面引擎提供了多个类来解决,其中最简单的是CCLabelTTF,它不需要独立载入文字序列,也不需要指定来源图片,直接在屏幕的位置上显示一行指定的英文和数字的字符,例如:

  label_Score = CCLabelTTF.labelWithString("0", "Arial", 24);

  label_Score.Color = new ccColor3B(255, 0, 0);

  label_Score.anchorPoint = new CCPoint(1, 0.5f);

  this.addChild(label_Score);

  label_Score.position = new CCPoint(CCDirector.sharedDirector().getWinSize().width - 24, CCDirector.sharedDirector().getWinSize().height - 24);

  这行的意思是在屏幕的右上角显示了一个0的字符,更改的时候也很简单,直接:

  label_Score.setString(“999”);

  我们用这个部分显示打中地鼠时候的积分。

  声音

  声音系统在cocos2dxna当中是一个独立的类,在命名空间CocosDenshion当中SimpleAudioEngine可以播放音乐、声效等,用法也很简单:

  //播放被打击的声音

  SimpleAudioEngine.sharedEngine().playEffect(CCFileUtils.fullPathFromRelativePath("Sounds/sound43"));

  在这之前需要将声音添加到Hit_MoleContent即可

  完成

  第一个类:Mole

教你在Cocos2D-X中如何开发一个打地鼠游戏(下)_Cocos2D-X网游_游戏开发_Cocos2D-X教程_课课家

  第二个类:Scene1

  制作一个好的游戏需要细致的推敲,本例子只是简单的实现了逻辑,具体的规则可以依照自己需要更改,祝愿在游戏的开发之路上风光无限。

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