美少女战士小游戏游戏的血用完了怎么办

分享给朋友:把视频贴到Blog或BBS&&通用代码: 复 制flash地址: 复 制html代码: 复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效FC43无解说MDQ版美少女战士人物碰一下敌人透明无限雷无限血游戏视频下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效FC43无解说MDQ版美少女战士人物碰一下敌人透明无限雷无限血游戏视频扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营-
节目制作经营许可证京字670号
请使用者仔细阅读优酷、、
Copyright(C)2016 优酷
不良信息举报***:游戏-游戏技巧-游戏经验-中国学网
      
更多精彩从此开始
热门频道推荐
作为一名出色的成功的营销人员,全面掌握各类营销技巧将使得您战无不胜
推荐频道排行
推荐栏目排行
推荐频道排行
推荐栏目排行
推荐频道排行
推荐栏目排行
推荐频道排行
推荐栏目排行
推荐频道排行
推荐栏目排行
推荐频道排行
推荐栏目排行
推荐频道排行
推荐栏目排行
推荐频道排行
推荐栏目排行
推荐频道排行
精彩推荐 |
游戏热点文章排行
全站文章排行
本网视点热门排行
频道导航: |
网站导航: |Cocos2d-x扣血飘字特效用完你就消失--之游戏开发
本文这里将要实现的一个功能是怪物受伤血量减少时,会出现一个扣了多少血量的数字从怪物中间飘到头顶,然后消失。然后有两种方式,一种是每次都扣同样的数字,一种是每次在一定范围内的数字随机,本文上接博主的文章
cocos2d-x版本:2.2.5
工程环境:7+VS2010
打开方式:将工程放在cocos2d-x***目录下的project文件夹下用VS打开
一、自定扣血飘字特效类FlyWord
二、使用方法
三、思路总结
一、自定扣血飘字特效类FlyWord
其实这里这里就是一个CCLabelTTF的类型来执行动画CCMoveBy的一个过程
下面来看看我自己定义,头文件FlyWord.h
#ifndef __FLYWORD_H__
#define __FLYWORD_H__
#include cocos2d.h
#include cocos-ext.h
USING_NS_CC;
USING_NS_CC_EXT;
class FlyWord: public CCNode{
//创建文字飘动,create 和 init 是连在一起的,调用create的时候必然会调用init
static FlyWord* create(const char *word,const int fontSize,CCPoint begin);
//init方法接受3个参数,分别是飘入的字符串,字体大小,从哪里开始飘入,init方法的作用主要是初始化FloatWord内置的Label
bool init(const char *word,const int fontSize,CCPoint begin);
//文字从下到上飘动
void Flying();
//文字飘动后删除所有对象
void Flyend();
int _fontS//字体大小
CCPoint _//要添加到的怪物的中心点
CCLabelTTF* m_//字体类型
#endif // __FLYWORD_H__
然后是实现类FlyWord.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();
CC_SAFE_DELETE(ret);//安全删除
bool FlyWord::init(const char *word,const int fontSize,CCPoint begin){
if(!CCNode::init()){
m_plabel = CCLabelTTF::create(word,Marker Felt,fontSize);
//设置颜色
ccColor3B RGB;
RGB.r=255;
m_plabel-&setColor(RGB);
this-&addChild(m_plabel);
this-&setPosition(ccp(begin.x,begin.y));
//初始化完成后就开始飘字了
//文字从下到上飘动
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);
//setVisible(true);
this-&runAction(act);
void FlyWord::Flyend()
//完成之后把该对象从内存中删除掉
this-&removeAllChildrenWithCleanup(true);
this-&removeFromParentAndCleanup(true);
代码里都有非常详细的说明,这里我就不再说明了
二、使用方法
在Monster.h或Monster.cpp中添加头文件#include FlyWord.h
下面是每次随机产生10-30的一个要减少的血量,这也是游戏中比较常见的,怪物每次的受伤量可能不一样。
//受伤动画结束
void Monster::HurtEnd()
//产生10-30一个随机掉血的量
srand((UINT)GetCurrentTime());
int x = rand()%30+10;
//转成字符
char szName[100] = {0};
sprintf(szName,-%d,x);
//怪物掉血
Monster_xue-&setCurrentProgress(Monster_xue-&getCurrentProgress()-x);
//扣血飘字
FlyWord *wen_zi=FlyWord::create(szName,30,CCPointMake(0,0));//放在当前怪物的(0,0)位置,这里的(0,0)是它的中心,具体可以看看锚点
this-&addChild(wen_zi,2);
if(Monster_xue-&getCurrentProgress()==0)
//播放怪物死亡动画
DeadAnimation(monster_dead,2,MonsterDirecton);
如果,想让怪物每次受伤量都一样,很简单,代码为
//受伤动画结束
void Monster::HurtEnd()
////产生10-30一个随机掉血的量
//srand((UINT)GetCurrentTime());
//int x = rand()%30+10;
//转成字符
char szName[100] = {0};
sprintf(szName,-%d,10);
//怪物掉血
Monster_xue-&setCurrentProgress(Monster_xue-&getCurrentProgress()-10);
//扣血飘字
FlyWord *wen_zi=FlyWord::create(szName,30,CCPointMake(0,0));//放在当前怪物的(0,0)位置,这里的(0,0)是它的中心,具体可以看看锚点
this-&addChild(wen_zi,2);
if(Monster_xue-&getCurrentProgress()==0)
//播放怪物死亡动画
DeadAnimation(monster_dead,2,MonsterDirecton);
1.10-30随机掉血。文字从下到上
2.固定掉血,文字从下到上
三、思路总结
主要是这个文字类的设计,这里我的思路的得到英雄的位置,然后CCLabelTTF对像就从英雄的中间位置开始向上移动,执行动画CCMoveBy的一个过程移动写成后它就自己释放了(removeAllChildrenWithCleanup(true)和removeFromParentAndCleanup(true);)。用完一次就扔了,然后等到怪物掉血了,再用,用完再扔,多方便~游戏开发过程中有时思路真的很重要啊!
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

参考资料

 

随机推荐