3D Game Kit Liteによる学習~その4
※本ページはUnityエディタ2021.3.4f1バージョンにて確認しています。
3D Game Kit Liteを利用した学習過程をまとめてみようシリーズ第4弾。以下のリソースを元にまとめています。
さて今回は少しUI=User Interfaceに触れる。前回HugeDoorを3つのSwitchを全てOnにしないと開かないような仕掛けを用意してみた。これをゲームUI的に考えるのであれば
- ドアには何らかのインジケータを用意してどこまでSwitchが押されているか示す
- Switchは設定が済んだならばステージのあちこちに分散させて謎解きの要素を加味する
と言った具合だ。今回はこの例の一つとして実習を行った例を以下に示す。
- PrefabからCrystalを探してSceneにドロップする。
- Crystalをひとつ選択した状態でCtrl+Dキーを2回押す。HieracheyにCrystalが2個追加されているのが確認出来るかい?これはDuplicateと呼ばれる機能のショートカットだ。
- 見やすい様に3つのCrystalの位置をずらしたらDoorHugeの近く、あるいは正面上あたりに移動してほしい。
- Switchを一つ選択しAdd ComponentからSend On Trugger Enterスクリプトを追加してほしい。そしてそのスクリプトに含まれるInteractive TypeにはActiveを、Interactive ObjectにはCrystalの一つを。One Shotにチェックを入れて、LayerにはPlayerを指定する。
- これを3回繰り返して3つのSwitchそれぞれとCrystalに白い線が結ばれたら完成だ。
- あとはSwitchを適当に散らして配置して上手くCrystalインジケータが表示されるか?またちゃんとドアは開くかを確認して欲しい。
さてUnity Learnに於いてはひとつ課題を進めて以下のまとめも続いてやってしまおう。
例えば前回Switch3つで開くドアを用意したが、そのままでは少々不親切かもしれない。謎解きとしては優しい部類であるけれども、チュートリアルと考えるならば何らかの案内があってしかるべきだろう。今回はそんな一般的にはTickerと呼ばれるゲームUIに関する実習だ。
- Prefabs>InteractablesからInfoZoneをScendにドロップする
- HieracheyのUIセクション下にあるのが望ましいがその子供にしてはダメだよ?
- InfoZoneにはSphereColliderが設定されている。これをどの様に使うかと言えばEllenが指定した範囲に入った時にDialogを表示させる目的で使うワケだ。
- なのでInfoZoneを配置する場所はドアの前が望ましいし、Colliderの大きさも大き過ぎずドアの範囲を囲むくらいが良いだろう。
- 念のためにInspectorでLayerにEnviroment、Collider部でIs TriggerにチェックOnとなっている事を確認してくれたまへ。
- 次はPrefabs>UIPrefabsからDialogueCanvasを追加する。HieracheyではInfoZoneの次くらいで良いかな。追加したらInspectorのDialogueCanvas名の直ぐ左にあるチェックボックスを外しておいてくれ。これはダイアログが始めから見えちゃ格好悪いし、これをInfoZoneで操作する前振りと言うことだ。
- InfoZoneを選択したらInteractive On Triggerスクリプトの所にある設定をするのだけれど、例のドラッグ&ドロップ操作を行う(何度も行うから覚えてネ)。OnEnter()とある箇所のNone(Object)に先ほどのDialogueCanvanを指定する。同様にOnExit()のNone(Object)の所にもだ。以下のような図になっていればOK!
- 続けて以下の様にNo Functionだった部分を変更するのだが順に選択してゆけば問題ないはずだ。ただし日本語は文字化けするので英語で。(Unityにおける日本語表示の扱いは少しここから外れるので別の機会に学習してくれたまへ)
- OnEnter()時とOnExit()時にそれぞれ設定が異なるので注意だ。前者ではメッセージ文字列をCanvasに送る設定で、後者はCanvasを1秒まって消す設定だ。
- RunテストでEllenが指定範囲に入るとDialogueが表示され、離れると消えれば完成だ!
以上今回はここまで!