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

<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的一个过程移动写成后它就自己隐藏并且回复原位,。用完一次隐藏并且回复原位了,然后等到怪物掉血了,再用,用完隐藏并且回复原位,多方便!

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