お手軽袋文字とか
袋文字(塗りつぶしあり)を作る方法はいくつかあるともいますが、自分がいつも使っているお手軽な方法を紹介します。
例えば太さ1の輪郭で輪郭部分が白、中身が赤色のテキストを書く場合には
for (int i=-1; i<=1; i++) for (int j=-1; j<=1; j++) {
DrawText(x+i, y+j, text, WHITE);
}
DrawText(x, y, text, RED);
のようにします。少しずつずらしながら同一画像を描画することで元のテキストを上下左右に1ドット太らせて、最後に真ん中にテキストを描画して塗りつぶし部分を表現します。
けっこう無駄のある方法なのですが、とにかく手軽に袋文字(塗りつぶしあり)を描画したいというのであれば上記の方法で完全に達成できます。
ちなみに塗りつぶしなし袋文字は直接描画することができまんが、別の画像バッファを用意し、
for (int i=-1; i<=1; i++) for (int j=-1; j<=1; j++) {
DrawText(x+i, y+j, text, WHITE);
}
SetBlendMode(BLEND_SUBTRACT); // <-- 減算合成にする!!
DrawText(x, y, text, WHITE);
みたいにして文字の真ん中部分を引いてやれば文字の内側にぽっかりと透明な穴が開くので、そうしてできた画像を改めてテキストとして描画します。
袋文字(塗りつぶしあり)の使いどころとしては、例えばこんな感じの文字表示。
この背景では大丈夫ですが、白っぽい場所では白い文字は見えにくくなってしまいます。
そこでお手軽袋文字!
こうやって黒い縁取りがあると安心ですね。
……いやこれ文字ちょっと細すぎるかな。まあいいか。
おまけの小ネタ
少し前にツイートした触手研究の成果
https://twitter.com/helio_dor/status/1169622936732307457
自分で作っておいてなんですが……最初に動いているのを見たとき、子供の頃に釣りの餌箱を見てしまったときのトラウマが蘇りました。
まあそれは置いといて、後はチンアナゴみたいに下から生えてユラユラしてるのも欲しいですよね。
https://twitter.com/helio_dor/status/1175691528431267840
実際はこの暗いステージには触手生やす予定無いので、この問題は取り合えず放置ですが。
あと、たまに主人公(の体操着)の色が変わっているのはパワーアップで変わるからです。
何気にこだわりのオーラ。(実はヴィータ大脱出で作ったやつ)