Cocos2d-x扣血飘字特效用完你就消失--之游戏开发《赵云要格斗》
这里是Evankaka的博客,欢迎大家前来讨论与交流~~~~~~ 转载请注明出处http://www.52php.cn/article/p-ojbdkngm-kh.html 本文这里将要实现的一个功能是怪物受伤血量减少时,会出现一个扣了多少血量的数字从怪物中间飘到头顶,然后消失。本文上接博主的文章http://www.52php.cn/article/p-zqwvvtub-kh.html
cocos2d-x版本:2.2.5 工程环境:windows7+VS2010 打开方式:将工程放在cocos2d-x安装目录下的project文件夹下用VS打开 (源码免费下载)效果:
目录 一、自定扣血飘字特效类FlyWord 二、使用方法 三、思路总结
一、自定扣血飘字特效类FlyWord其实这里这里就是一个CCLabelTTF的类型来执行动画CCMoveBy的一个过程 下面来看看我自己定义,头文件FlyWord.h
<pre name="code" class="cpp">#include "FlyWord.h" FlyWord* FlyWord::create(const char *word,const int fontSize,CCPoint begin){ FlyWord* ret = new FlyWord(); //这样写更安全一些 if(ret && ret->init(word,fontSize,begin)){ ret->autorelease(); return ret; } CC_SAFE_DELETE(ret);//安全删除 return nullptr; } bool FlyWord::init(const char *word,CCPoint begin){ if(!CCNode::init()){ return false; } //初始化 _begin = begin; m_plabel = CCLabelTTF::create(word,"Marker Felt",fontSize); //设置颜色 ccColor3B RGB; RGB.r=255; RGB.g=0; RGB.b=0; m_plabel->setColor(RGB); this->addChild(m_plabel); this->setPosition(ccp(begin.x,begin.y)); //初始化完成不可见 this->setVisible(false); return true; } //文字从下到上飘动 void FlyWord::Flying() { CCMoveBy* moveact=CCMoveBy::create(0.5f,CCPointMake(0,70));//0.5秒向上移动70 //创建回调动作,文字飘动完后 CCCallFunc* callFunc=CCCallFunc::create(this,callfunc_selector(FlyWord::Flyend)); //创建连续动作 CCActionInterval* act=CCSequence::create(moveact,callFunc,NULL); //设置可见性 this->setVisible(true); this->runAction(act); } void FlyWord::Flyend() { //完成之后设置隐藏 this->setVisible(false); //回复原位 this->setPosition(ccp(_begin.x,_begin.y)); } 代码里都有非常详细的说明,这里我就不再说明了 二、使用方法在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();
//受伤动画结束 void Monster::HurtEnd() { IsHurt=false; //文字飘动 wen_zi->Flying(); //怪物掉血 Monster_xue->setCurrentProgress(Monster_xue->getCurrentProgress()-10); if(Monster_xue->getCurrentProgress()==0) { //播放怪物死亡动画 DeadAnimation("monster_dead",2,MonsterDirecton); } }
三、思路总结主要是这个文字类的设计,这里我的思路的得到英雄的位置,然后CCLabelTTF对像就从英雄的中间位置开始向上移动,执行动画CCMoveBy的一个过程移动写成后它就自己隐藏并且回复原位,。用完一次隐藏并且回复原位了,然后等到怪物掉血了,再用,用完隐藏并且回复原位,多方便!(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |