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に対して連続してメソッドを実行すると、その分だけラベルが表示されます。