需要が読めない
最近ブームの話題作だ、ということで寒風吹きすさぶ中、わざわざ映画館まで足を運んで「ボヘミアン・ラプソディ」を観て来たました。まぁ、Queenに思い入れも何もない人間なので「感動!」「泣いた!」みたいな絶賛をする気もないし、「クイーンってはさぁ、こんな美談で語るようなバンドじゃないんだよ・・・」みたいなうざい薀蓄を語る気もないのですが、映画ラスト20分のライブシーンは必見だと思います。映画を観た後、実際のライブ映像も観たくなるし。
ただ、昼間の回ということもあってか観客が爺さん婆さんばかりでビックリ。あれだよ、ブームってのは若い女性の間とかで流行っているからブームって言うんじゃないですか?シルバー世代とか演歌しか聴かない、とか固定観念に染まっていたので、まさか洋楽ロックが主題の映画を観に行って敬老会の中に混じるような状態なるとは夢にも思いませんでした。学生はおろか同世代の人間も見当たらなかったし。
メニュー画面作り
そんな感じで需要もターゲットも読めないような人間が今日もゲーム作りに励んでいるわけですが、「Dull Things No Life」の製作も本編の主要な部分はだいぶ作り終えたので、枝葉となるメニュー画面等々の作りこみ作業へ移ってきています。
こんな感じ(前回の記事でも紹介したけど)
そのメニュー画面も上の画像にあるように大体は完成したのですが、左上に見える掲示板みたいな部分、ユーザにいろいろな情報を表示する部分の作りこみで問題が発生しました。
表示情報を切り替える
掲示板みたいな部分には、現在の状態やスコア情報等を一定間隔で切り替えて表示しています。(全てテキスト情報)
これは各情報を表示するTextMeshを四角柱型に配置して、それを90度づつ回転することでユーザ側に見える情報を変えています。
この90度づつ回転させる、という機能にはDoTweenのDoRotateメソッドのRelativeオプションをtrueにすることで実装しています。
このRelativeオプションは非常に有用でこれを設定した場合、移動角度を相対的に計算するようになります。
つまり、現在角度からZ軸方向に90度回転させたい場合、
// 回転処理 MessageBoardObj.transform.DOLocalRotate(new Vector3(90.0f, 0.0f, 0.0f), 0.3f) .SetRelative(true);
としてコールすると、オブジェクトの角度は順に0度⇒90度⇒180度⇒270度⇒360度へと回転してくる、はずです。ですが、実際に実行してみる・・・
0度⇒90度の場合
うん、大丈夫
90度⇒180度の場合
OK、OK
180度⇒270度の場合
コレまでとは逆方向に回転、なんでやねん。
調べてみるとDORotateは動作として回転方向は指定した角度の近い方へ回転する仕様らしい、例えば270度に回転する場合は、0度から回転して0->1...269->270となるのではなく、360度から回転して360->359...271->270で回転するみたい。
つまり、0度⇒360度を90度づつ回転させる場合、全て同じ指定で回転させるのではなく、180度⇒270度の場合は逆方向に回転させないと上手くいかないようです。
なので、コードとしては
/// <summary> /// メッセージ表示処理(順次回転表示) /// </summary> private void RotDisp_MessageBoard() { // Indexの設定 nextIndex++; if (nextIndex >= 4) nextIndex = 0; if (nextIndex != 3) { // 回転処理 MessageBoardObj.transform.DOLocalRotate(new Vector3(90.0f, 0.0f, 0.0f), 0.3f) .SetRelative(true); } else { // 回転処理 MessageBoardObj.transform.DOLocalRotate(new Vector3(-90.0f, 0.0f, 0.0f), 0.3f) .SetRelative(true); } }
と、超ダサいコードに。うーん。。。
ちなみに結果としては
こんな感じで、上手く一回転してくれるようになりましたが、なんだかなぁ・・・・