文字列ピクチャを分割表示する方法
今回解説するのは「文字列ピクチャを分割する方法」です。 といってもわかりづらいと思うので、下記の動画を御覧ください。
#ウディタ 文字列ピクチャを分割してみた。 pic.twitter.com/d6DklPww6B
— シグラル (@shiguraru) 2017年7月19日
動画では上下分割しか行っていませんが、実際には斜めに分割したり、分割中心を任意に変えたりということも可能です。
役に立たないと思われるかもしれませんが、例えば私の過去作品『技術将棋:デルタ』ではOPに生かされています。
文字列分割処理の利用例 pic.twitter.com/vnS4eWxTWZ
— シグラル (@shiguraru) 2017年8月29日
さて、肝心の実装方法ですが、5枚のピクチャを利用して以下のような処理をしています。
レイヤー1:文字を中心に表示
レイヤー2:文字の下側半分を真っ黒にする
レイヤー3:文字をRGBすべて50で加算表示
レイヤー4:文字の下半分を囲うRGB50の四角形を加算表示
レイヤー5:全ての位置からRGB50の四角形を減算
サンプルコードを以下に示します。
また、コモンのDLはコチラから
■変数操作: CSelf12[分割位置y] = 120 + 0
■変数操作: CSelf10[左文字x] = 160 + 0
■変数操作: CSelf11[右文字x] = 160 + 0
■ループ開始
|■ピクチャ表示:1 [中心]文字列[\f[40]ウディタ] X:CSelf10[左文字x] Y:120 / 0(0)フレーム / パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:2 [左上]ウィンドウ「<SQUARE>」サイズ[320,40] X:0 Y:CSelf12[分割位置y] / 0(0)フレーム / パターン 1 / 透 255 / 減算 / 角 0 / 拡 100% / カラー R[100] G[100] B[100]
|■ピクチャ表示:3 [中心]文字列[\f[40]ウディタ] X:CSelf11[右文字x] Y:120 / 0(0)フレーム / パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[50] G[50] B[50]
|■ピクチャ表示:4 [左上]ウィンドウ「<SQUARE>」サイズ[320,40] X:0 Y:CSelf12[分割位置y] / 0(0)フレーム / パターン 1 / 透 255 / 加算 / 角 0 / 拡 100% / カラー R[50] G[50] B[50]
|■ピクチャ表示:5 [中心]ウィンドウ「<SQUARE>」サイズ[320,240] X:160 Y:120 / 0(0)フレーム / パターン 1 / 透 255 / 減算 / 角 0 / 拡 100% / カラー R[50] G[50] B[50]
|■キー入力:CSelf13[キー入力] 4方向
|■条件分岐(変数): 【1】 CSelf13[キー入力] が 2 と同じ 【2】 CSelf13[キー入力] が 4 と同じ 【3】 CSelf13[キー入力] が 6 と同じ
|-◇分岐: 【1】 [ CSelf13[キー入力] が 2 と同じ ]の場合↓
| |■変数操作: CSelf12[分割位置y] += 1 + 0
| |■
|-◇分岐: 【2】 [ CSelf13[キー入力] が 4 と同じ ]の場合↓
| |■変数操作: CSelf10[左文字x] -= 1 + 0
| |■変数操作: CSelf11[右文字x] += 1 + 0
| |■
|-◇分岐: 【3】 [ CSelf13[キー入力] が 6 と同じ ]の場合↓
| |■変数操作: CSelf10[左文字x] += 1 + 0
| |■変数操作: CSelf11[右文字x] -= 1 + 0
| |■
|◇分岐終了◇
|■条件分岐(変数): 【1】 CSelf13[キー入力] が 8 と同じ
|-◇分岐: 【1】 [ CSelf13[キー入力] が 8 と同じ ]の場合↓
| |■変数操作: CSelf12[分割位置y] -= 1 + 0
| |■
|◇分岐終了◇
|■ウェイト:1 フレーム
|■
◇ループここまで◇◇