概要
文字を1文字ずつ順番に表示するノードです。RPGのセリフ窓でおなじみの
「タイプライター演出」を、TextLayout の可視状態を切り替えることで実現します。
画像化は後段の text_rasterize が担当します。
使い方のポイント
- 定番チェーン:
text_layout → text_reveal_by_glyph(progress を📌入力ピン化 → time_source) → text_rasterize → animation_render - カクカクした1文字刻みにしたいなら progress を
math_func(Floor)ベースの段階化で駆動する(滑らかに進めると 文字の出るタイミングが不均等に見えることがある) first_glyph/last_glyphで範囲を限定すれば「後半だけ後から出す」 ような分割演出も
関連ノード
text_layout— 前段(必須)text_animate_by_glyph— 表示ではなく動きの演出版text_rasterize/text_outline— 画像化time_source— progress の駆動
どう考えればいい?
TextLayoutは「文字がどこにあるか」の構造Text Reveal By Glyphは「そのうちどの文字を見せるか」を決める- まだ画像にはしない
- 最後は
TextRasterizeやTextOutlineで画像化する
glyph について
- v1 では
glyphは実質 1文字単位 と考えてよいです - したがって
先頭文字 = 0は 1文字目、1は 2文字目、という意味です - つまり
先頭文字/末尾文字は 文字番号 を指定していると思えば大丈夫です
挙動
first_glyph〜last_glyphの範囲だけがリビール対象になります- 範囲外の文字は非表示になります
reverse = trueの時は、同じ範囲を末尾から表示しますdelayは全体の開始待機です。0.5なら progress が半分進むまで何も表示しません- 既に
visible = falseの glyph は、このノードでも表示されません
進行度の考え方
progressは常に0..1の正規化値です先頭文字〜末尾文字で選ばれた 対象文字数 が11なら、1文字ぶんの刻みは1 / 11 = 0.0909...です- 1文字ずつ一定間隔で表示したい時は、この刻みごとに
progressを進めます - 文字数が変わっても同じアニメーション系の制御へ載せやすいように、文字数そのものではなく
0..1を使っています
インスペクター補助表示
文字リビール補助には、次が表示されます- 全体の文字数
- 現在選んでいる範囲の文字数
- 現在選んでいる範囲に対する 1文字ぶんの刻み値
- 現在の進行度で何文字表示されるか
末尾文字は、入力TextLayoutの実際の文字数に合わせて自動で上限が更新されます- 出力
TextLayoutは Inspector の文字レイアウト(デバッグ)で glyph index / bbox も確認できます
使用例
[Text Input] -> [Text Layout] -> [Text Reveal By Glyph] -> [Text Rasterize] -> [Preview]
[Text Input] -> [Text Layout] -> [Text Reveal By Glyph]
[TimeSource] ----------------------^ progress