cocos2d-x 如何使用CCProgressTimer作為血條,實現跟隨怪物進行移動,自動掉血,然後死亡。
1、如何使用CCProgressTimer 2、如何跟隨怪物 3、如何掉血和死亡 4、結構層次。
//注意加紅色部分
樣例程式碼如下:
怪物的定義:
class Enemy :
public CCSprite
{
public:
Enemy(CCPoint p, CCString* type, int itemId);
~Enemy(void);
CCSprite* enemySprite;
怪物放入layer進行顯示:
gameLayer->addChild(this->enemySprite,KZENEMY);
血條在建立enemy時一併建立,並作為其子:
Enemy* enemy = new Enemy(startPosition,enemytype, ((int)(dt*1000))%30);
//加入血條背景
CCProgressTimer* progressTimeHPBackGround = CCProgressTimer::create(CCSprite::create("hpbackground.png"));
progressTimeHPBackGround->setPosition(ccp(0,32));
progressTimeHPBackGround->setAnchorPoint(ccp(0,0));
progressTimeHPBackGround->setPercentage(100);
//加入血條背景
CCProgressTimer* progressTimeHP = CCProgressTimer::create(CCSprite::create("hp.png"));
progressTimeHP->setPosition(ccp(0,sGlobal->tileBlockSize));//下面的配置參加testcpp的樣例程式碼
progressTimeHP->setAnchorPoint(ccp(0,0));
//預設是中間,要設定左下角
progressTimeHP->setPercentage(100);
//初始的百分比
progressTimeHP->setMidpoint(ccp(0, 1));
//設定中點位置,預設是四周向重點變化。現在把重點設定為左邊(縱向居中),使血從右向左減少
progressTimeHP->setBarChangeRate(ccp(1, 0));//暫時不知道什麼用
progressTimeHP->setType(kCCProgressTimerTypeBar);//暫時不知道什麼用
enemy->enemySprite
enemy->enemySprite->addChild(progressTimeHP,KZENEMYHP,TENEMYHP);
跟隨移動、掉血和死亡:
pEnemy->enemySprite->setPosition(nextP);
CCProgressTimer* cct = (CCProgressTimer*)pEnemy->enemySprite->getChildByTag(TENEMYHP);
int cp = cct->getPercentage();
if (cp > 0)
{
cct->setPercentage(--cp);//掉血
}
else
{
pEnemy->enemySprite->setVisible(false);//設定不可見
finishedEnemy->addObject(pEnemy);
//放入死亡陣列,等待delete記憶體
}
效果圖: