Prainブログ

ゲーム開発とかIT小話とかその他雑記のブログ

*

Cocos2d-x テキストを1文字ずつ表示する文字送りのやり方

      2016/10/28

caption_speed

こんにちは。akiです。

この記事ではテキストを1文字ずつ表示する「文字送り」についてCocos2d-xで実装する方法を説明していきます。RPGなどで良く見かけるアレですね。

 

 

スポンサーリンク

 

 

基本的な考え方

1.予めテキストを透明化しておく

2.時間差で1文字ずつテキストの透明化を解除する

 

 

プログラム実装


    // テキストの生成&透明化
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    
    auto text = Label::createWithTTF("文字送りのテストです。\n改行コードも挟めます。", FONT, 10);
    text->setPosition(Vec2(visibleSize.width / 2 + origin.x
                       , visibleSize.height / 2 + origin.y));
    text->setColor(Color3B::WHITE);
    text->setOpacity(0);// ポイント1 テキストの透明化
    this->addChild(text);

    // テキストの透明化解除
    for(int i = 0; i < text->getStringLength(); i++){

        auto func = CallFunc::create([this, i, text](){
            Sprite* sp = text->getLetter(i);
            if(sp != nullptr){
                text->getLetter(i)->setOpacity(255);// ポイント2 テキストを1文字ずつ透明化解除
            }
        });
        
        auto delay = DelayTime::create(.05 * i);
        auto seq = Sequence::create(delay, func, nullptr);
        
        if(text->getLetter(i) != nullptr){
            text->getLetter(i)->runAction(seq);
        }
        
    }

 

 

ポイントはgetLetter()ですね。改行コードも勝手に処理してくれます。

 

細かいテクニックですが、こういう演出がゲームらしさを出すのだと思います。

 

 - , , ,

        

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

【フェリクスマギアの魔女】一部端末でログインできなくなる問題について

2019年3月23日時点で、一部端末でログインできなくなる問題について状況をお知 …

エフェクトサムネ
ゲーム制作 Cocos2d-x関連 第12回 「ボールヒットエフェクトの表示」

派手なヒットエフェクトが欲しい!   この回では、派手では無いですが、 …

三平方の定理
ゲーム制作 Cocos2d-x関連 第7回 「ボールとドロップとの衝突検知と跳ね返り」

今回はボールとドロップとの衝突検知を実装してきます。   前回はボール …

ゲーム制作 Cocos2d-x関連 第16回 「パズル要素を実装する」

ちょっと待って、パズル要素はどこなの???   ・・・ですよね・・・「 …

cocos2dx
Cocos2d-x サーバ側の処理とデータ送信(Httpレスポンス)

この記事は「Cocos2d-x セーブデータをサーバに送信して保存する」の続きに …