多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > [置頂] Cocos2d-x扣血飄字特效用完你就消失--之游戲開發《趙云要格斗》(8)

[置頂] Cocos2d-x扣血飄字特效用完你就消失--之游戲開發《趙云要格斗》(8)

來源:程序員人生   發布時間:2015-01-23 09:09:56 閱讀次數:4125次

        這里是Evankaka的博客,歡迎大家前面討論與交換~~~~~~

        轉載請注明出處http://blog.csdn.net/evankaka/article/details/42740575

       本文這里將要實現的1個功能是怪物受傷血量減少時,會出現1個扣了多少血量的數字從怪物中間飄到頭頂,然后消失。然后有兩種方式,1種是每次都扣一樣的數字,1種是每次在1定范圍內的數字隨機,本文上接博主的文章http://blog.csdn.net/evankaka/article/details/42689689。

cocos2d-x版本:2.2.5

工程環境:windows7+VS2010

打開方式:將工程放在cocos2d-x安裝目錄下的project文件夾下用VS打開


效果:



目錄

1、自定扣血飄字殊效類FlyWord

2、使用方法

3、思路總結


1、自定扣血飄字殊效類FlyWord

其實這里這里就是1個CCLabelTTF的類型來履行動畫CCMoveBy的1個進程

下面來看看我自己定義,頭文件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{ public: //創建文字飛舞,create 和 init 是連在1起的,調用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(); private: int _fontSize;//字體大小 CCPoint _begin;//要添加到的怪物的中心點 CCLabelTTF* m_plabel;//字體類型 }; #endif // __FLYWORD_H__
然后是實現類FlyWord.cpp

#include "FlyWord.h" FlyWord* FlyWord::create(const char *word,const int fontSize,CCPoint begin){ FlyWord* ret = new FlyWord(); //這樣寫更安全1些 if(ret && ret->init(word,fontSize,begin)){ ret->autorelease(); return ret; } CC_SAFE_DELETE(ret);//安全刪除 return nullptr; } bool FlyWord::init(const char *word,const int fontSize,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)); //初始化完成后就開始飄字了 Flying(); 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); //setVisible(true); this->runAction(act); } void FlyWord::Flyend() { //完成以后把該對象從內存中刪除掉 this->removeAllChildrenWithCleanup(true); this->removeFromParentAndCleanup(true); }
代碼里都有非常詳細的說明,這里我就不再說明了

2、使用方法

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

下面是每次隨機產生10⑶0的1個要減少的血量,這也是游戲中比較常見的,怪物每次的受傷量可能不1樣。

//受傷動畫結束 void Monster::HurtEnd() { IsHurt=false; //產生10⑶01個隨機掉血的量 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); } }
如果,想讓怪物每次受傷量都1樣,很簡單,代碼為

//受傷動畫結束 void Monster::HurtEnd() { IsHurt=false; ////產生10⑶01個隨機掉血的量 //srand((UINT)GetCurrentTime()); //int x = rand()%30+10; //轉成字符 char szName[100] = {0}; sprintf(szName,"-%d",10); //怪物掉血 Monster_xue->setCurrentProgress(Monster_xue->getCurrentProgress()⑴0); //扣血飄字 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⑶0隨機掉血。文字從下到上


2.固定掉血,文字從下到上

3、思路總結

          主要是這個文字類的設計,這里我的思路的得到英雄的位置,然后CCLabelTTF對像就從英雄的中間位置開始向上移動,履行動畫CCMoveBy的1個進程移動寫成后它就自己釋放了(removeAllChildrenWithCleanup(true)和removeFromParentAndCleanup(true);)。用完1次就扔了,然后等到怪物掉血了,再用,用完再扔,多方便~游戲開發進程中有時思路真的很重要啊!


    

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美两性人xxxx高清免费 | 欧美精品99毛片免费高清观看 | 一二三区视频 | 日韩一级高清 | 欧美区亚洲区 | 黑人双渗透 | 国产欧美日韩一区二区三区 | 四虎一区二区三区精品 | 成人a毛片久久免费播放 | 欧美一区三区 | 久久91精品国产91久 | 国产精品欧美一区二区三区不卡 | 国产视频一区二区 | 黄上床大片 | 亚洲qingse中文字幕久久 | 日本xxxx韩国护士 | 伊人精品视频在线观看 | 2020国产成人精品视频人 | 国产成人综合亚洲一区 | 亚洲乱码一二三四区麻豆 | 中文精品久久久久中文 | 亚洲欧美日韩另类精品一区二区三区 | 欧美另类亚洲 | 冲田杏梨j和l超乳w真性中出 | 欧美一级毛片生活片 | 国产福利在线 | 亚洲成人77777 | 久久厕所精品国产精品亚洲 | 香港黄页精品视频在线 | 国内免费自拍视频 | 黑人欧美一级毛片 | 亚洲邪恶天堂影院在线观看 | 第一福利在线观看永久视频 | 国产成人亚洲综合在线 | 性欧美video高清 | 欧美jizzhd精品欧美巨大 | 天码毛片一区二区三区入口 | 毛片精品| 国产毛片久久久久久国产毛片 | 国产裸舞福利在线视频合集 | 亚洲精品国自产拍影院 |