ルーレットの作り方(7) 横書き式の文字盤
「今日は、こうなるまでの話をする」
妹「そうなるんだ……」
imoue.hatenablog.com
これの続きから
「で、数字とかを出すなら昨日のやり方でいいんだけど、文字を入れるには向いてない。字の大きさにもよるけど3文字ぐらいしか入らない。本当は昔やってた東京フレンドパークみたいな、縦書きのやつがよかったんだけど、ウィジェットに縦書き用の設定が見当たらなかったので、妥協して横書き式にした」
「まずウィジェットブループリントを編集して、TextBlockを変数として扱えるようにしておく。設定用の関数も作っておくとスマートだけど、今回は無しでやってる。あと文字を右寄せにしてある。ルーレットの右側に来た時に文字が正しく見える状態を基準にしたいから、その時に右寄せになってると、どの文字も扇の外側に字が並ぶようになる」
「本当はウィジェット側のPivotも設定したかったけど、これはなんかブループリントからでは出来ないみたいだった。ただウィジェットの大きさ自体は固定だから、ピボットじゃなくLocationの方をずらして、こういう風になるように調整」
「この状態が基本で、扇と同じ角度+0.5個分の回転を加えると丁度よくなる」
「さらに個別の文字が表示できるように、配列から取り出す仕組みに変える。これは色を個別指定する時と同じやり方」
コンストラクションスクリプト(扇形の表示)
イベントグラフ(文字の表示)
「そしてようやく冒頭のコレになる」
妹「これ文字数多いとはみ出すんじゃない?」
「そのへんはウィジェット側で工夫して、ScaleBoxの中にTextBlockを入れたりすると、文字の長さに応じて字のサイズを変えることはできると思う。ちょっとめんどくさいけど」
「あと、昨日までのブループリントは、扇を作る時に時計と反対周りに作ってた。別にこれでもいいけど、それだと文字は0.5個分多く回すんじゃなく、0.5個分少なく回す必要がある。でないと逆方向にずれてしまう。それにマテリアル上の計算も時計回りに増えていく方式だったんで、それに合わせて扇を回転させる角度を逆に変更した」