一文字単位でテキストにエフェクトをかける

v8.3からテキストシェーダーが追加されました。これはGLSLにより一文字単位でテキストにエフェクトをかけます。

v8.3以前でも以下のようにエフェクトつきで文字を表示することは出来るのですが、通常のテキストのように順に表示されるのではなく、一行がまとめて表示されていました。

label start:
    "一度にフェードしながら表示" with fade
    "一度に振動しながら表示" with vpunch

まずは以下のように設定してみましょう

define config.default_textshader = "wave:10"

ゲームを再起動するとダイアログウィンドウのテキストも、その他スクリーンのテキストも関係なくすべてのテキストが波打っていると思います。そういう演出以外ではまず使用しないでしょう。

ダイアログウィンドウのテキストのみにエフェクトをかけたいときは次のようにしてダイアログテキストのスタイルを調べましょう。

  1. ダイアログのテキストにカーソルを合わせてShift+Iを押します。
  2. Displayable インスペクター(以前はスタイルインペクターだったのがいつの間にか改名されました)が開かれるのでテキストのスタイルをクリックします。
  3. テキストに影響されるスタイルが表示されます。上から順に優先度が高く、下がスタイルの親となっていきます。

say_dialogueというスタイルがダイアログテキスト全体に影響を与えられそうなので設定します。同様にnvl_dialogueも設定します。

    style.say_dialogue.textshader = "dissolve"
    style.nvl_dialogue.textshader = "dissolve"

これで最近よくみる一文字ずつテキストがフェードで表示されるおしゃれなエフェクトがかけられました。環境設定でテキスト表示速度を変更するとそれに合わせてちゃんとフェード速度を変更してくれます。

他のエフェクトも試してみましょう。今度はtextshaderに”wave”を設定してみます。テキストが波打って表示されるでしょう。しかし、すべてのテキストが同時に表示され、一文字ずつは表示されません。こういうときは一文字ずつ表示するエフェクトと組み合わせて使用します。

textshaderに”typewriter”と設定してみてください。今までのバージョン通り、一文字ずつエフェクトなしで表示されると思います。さらに”typewriter|wave”と設定してみてください。今度は一文字ずつ波打ちながら表示されます。テキストシェーダーは同時に複数指定できるので、1つめでテキストを一文字ずつ表示し、2つめでテキストを波打たせています。結果として波打ちながら一文字ずつ表示されるというわけです。

テキストシェーダーには多くのエフェクトが用意されており、GLSLで記述してオリジナルのエフェクトも作成できます。また、スタイル以外にもタグで特定の文字のみにエフェクトをかけることも出来るので、詳細はマニュアルを参照してください。

注意点として、テキストシェーダーの有無を1つのテキストブロックで混合できません。つまり以下のようにテキストタグを使用して一部にエフェクトをかけたい場合

"AAA{shader=jitter}BBB{/shader}CCC"

config.default_textshaderか、styleからシェーダーを設定してください。今まで通り表示するならdefault_textshaderをtypewriterにすると良いでしょう。

Pocket