Spriteの場所からスコアラベルを表示する

ゲーム中で敵を倒した時に、その敵Spriteの近くにスコアを表示させたい場合があります。
当然そのスコアラベルはずっと表示されるわけではなく、一定時間で消去します。


ぐでー退治では、ぐでーをタップするとスコアラベルが表示され、徐々に上に行きながらフェードアウトします。
LabelBMFontを使う場合は、fntファイルを事前に用意しておきます。

今回使用したバージョン

  • Cocos2d-x 3.2

この記事のSprite拡張クラスにメソッドを追加します。
Cocos2d-x 3.x タップ可能なSpriteのサブクラス - おかひろの雑記

void GudeSprite::showTapScore()
{
	String *scoreString = String::createWithFormat("%d",100);
	
	LabelBMFont *label = LabelBMFont::create(scoreString->getCString(),"ScoreFont.fnt");
	label->setPosition(Vec2(this->getContentSize().width * 0.5f,this->getContentSize().height));
	this->addChild(label);
	
	label->runAction(Sequence::create(Spawn::create(MoveBy::create(1.5f, Vec2(0,150)),
													FadeOut::create(1.5f),
													NULL),
									  CallFuncN::create([&](Node *node)
										{
											node->removeFromParent();
										}),
									  NULL));
}

1.5秒間かけて上に動きながらフェードアウトし、終わったらラベルを消去します。

同じSpriteに対して連続してメソッドを実行すると、その分だけラベルが表示されます。