【Cocos2d-x】Label加分動畫的實現

上次我們實現了加分版的功能,但爲了能讓玩家快速得知加分信息,應該另外實現加分動畫。

在cocos中,我們顯然可以通過對label類對象進行動作的設計以及動作序列的排列,從而達到這樣的動畫效果。

功能設計

這裏我們打算實現的動畫效果爲:

1) 在碰撞的位置顯示分數獎勵

2) 分數獎勵向上運動,並且同時在漸漸放大

3) 移除分數獎勵

功能實現

void removeTips(int tag)
{
	this->removeChildByTag(tag, true);
}
void updategrade(int increment,int x,int y)
{
	grade += increment;
	auto tips = Label::createWithBMFont(FNT_PATH, StringUtils::format("+%d", increment));
	//位置在碰撞位置上方15px處
	tips->setPosition(Vec2(x, y+15));
	this->addChild(tips, 10);
	//設置tag
	tips->setTag(TIPS_TAG);
	//0.4s內向上移動15px
	FiniteTimeAction* move = MoveTo::create(0.4f,Vec2(x, y + 30));
	//0.4s內放大爲原來的1.3倍
	FiniteTimeAction* scaleup = ScaleBy::create(0.4f,1.3f);
	//合併動作,使得兩個動作同時進行
	FiniteTimeAction* actions = Spawn::create(move, scaleup, NULL);
	//回調移除函數動作
	auto actionRemove = CallFunc::create(CC_CALLBACK_0(HelloWorld::removeTips, this, TIPS_TAG));
	//通過sequence來決定動作序列的先後
	FiniteTimeAction* sequence = Sequence::create(actions, actionRemove,NULL);
	//執行動作序列
	tips->runAction(sequence);
	//log("%d", grade);
}
在Cocos2d-x的開發中,可以根據不同的需求情況,設計不同的動作以及調整動作序列,從而能夠實現不同的文字動畫效果。像此次實現的加分動畫,在格鬥遊戲、射擊遊戲、橫屏遊戲上都有比較廣泛的應用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章