Cocos2d-x扣血飘字特效用完你就消失--之游戏开发《赵云要格斗》(8)

前端之家收集整理的这篇文章主要介绍了Cocos2d-x扣血飘字特效用完你就消失--之游戏开发《赵云要格斗》(8)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这里是Evankaka博客,欢迎大家前来讨论与交流~~~~~~

转载请注明出处http://www.jb51.cc/article/p-ojbdkngm-kh.html

本文这里将要实现的一个功能是怪物受伤血量减少时,会出现一个扣了多少血量的数字从怪物中间飘到头顶,然后消失。本文上接博主的文章http://www.jb51.cc/article/p-zqwvvtub-kh.html

cocos2d-x版本:2.2.5

工程环境:windows7+VS2010

打开方式:将工程放在cocos2d-x安装目录下的project文件夹下用VS打开

源码免费下载

效果



目录

一、自定扣血飘字特效类FlyWord

二、使用方法

三、思路总结


一、自定扣血飘字特效类FlyWord

其实这里这里就是一个CCLabelTTF的类型来执行动画CCMoveBy的一个过程

下面来看看我自己定义,头文件FlyWord.h

  1. <pre name="code" class="cpp">#include "FlyWord.h"
  2. FlyWord* FlyWord::create(const char *word,const int fontSize,CCPoint begin){
  3.  
  4. FlyWord* ret = new FlyWord();
  5. //这样写更安全一些
  6. if(ret && ret->init(word,fontSize,begin)){
  7. ret->autorelease();
  8. return ret;
  9. }
  10. CC_SAFE_DELETE(ret);//安全删除
  11. return nullptr;
  12. }
  13.  
  14. bool FlyWord::init(const char *word,CCPoint begin){
  15. if(!CCNode::init()){
  16. return false;
  17. }
  18. //初始化
  19. _begin = begin;
  20. m_plabel = CCLabelTTF::create(word,"Marker Felt",fontSize);
  21.  
  22. //设置颜色
  23. ccColor3B RGB;
  24. RGB.r=255;
  25. RGB.g=0;
  26. RGB.b=0;
  27. m_plabel->setColor(RGB);
  28.  
  29. this->addChild(m_plabel);
  30. this->setPosition(ccp(begin.x,begin.y));
  31. //初始化完成不可见
  32. this->setVisible(false);
  33. return true;
  34. }
  35.  
  36. //文字从下到上飘动
  37. void FlyWord::Flying()
  38. {
  39. CCMoveBy* moveact=CCMoveBy::create(0.5f,CCPointMake(0,70));//0.5秒向上移动70
  40.  
  41. //创建回调动作,文字飘动完后
  42. CCCallFunc* callFunc=CCCallFunc::create(this,callfunc_selector(FlyWord::Flyend));
  43. //创建连续动作
  44. CCActionInterval* act=CCSequence::create(moveact,callFunc,NULL);
  45. //设置可见性
  46. this->setVisible(true);
  47. this->runAction(act);
  48.  
  49.  
  50. }
  51. void FlyWord::Flyend()
  52. {
  53. //完成之后设置隐藏
  54. this->setVisible(false);
  55. //回复原位
  56. this->setPosition(ccp(_begin.x,_begin.y));
  57. }


  1.  
代码里都有非常详细的说明,这里我就不再说明了

二、使用方法

在Monster.h中添加文件#include "FlyWord.h"

下面是每次随机产生10-30的一个要减少的血量,这也是游戏中比较常见的,怪物每次的受伤量可能不一样。

Monster.h添加成员变量

FlyWord *wen_zi;

然后在怪物的初始化函数中加:

//扣血飘字

wen_zi=FlyWord::create("-10",30,0));//放在当前怪物的锚点位置,

this->addChild(wen_zi,2);

然后在相应的地方调用函数Flying();

  1. //受伤动画结束
  2. void Monster::HurtEnd()
  3. {
  4. IsHurt=false;
  5. //文字飘动
  6. wen_zi->Flying();
  7. //怪物掉血
  8. Monster_xue->setCurrentProgress(Monster_xue->getCurrentProgress()-10);
  9.  
  10.  
  11.  
  12.  
  13. if(Monster_xue->getCurrentProgress()==0)
  14. {
  15. //播放怪物死亡动画
  16. DeadAnimation("monster_dead",2,MonsterDirecton);
  17. }
  18. }

  1.  


固定掉血,文字从下到上

三、思路总结

主要是这个文字类的设计,这里我的思路的得到英雄的位置,然后CCLabelTTF对像就从英雄的中间位置开始向上移动,执行动画CCMoveBy的一个过程移动写成后它就自己隐藏并且回复原位,。用完一次隐藏并且回复原位了,然后等到怪物掉血了,再用,用完隐藏并且回复原位,多方便!

猜你在找的Cocos2d-x相关文章