UnityのBoltでなにか作ってみる(5)玉転がしチュートリアル・完結編

こんにちは。スタジオ長介です。

UnityのBoltを使っての『玉転がしチュートリアル』をスキマ時間に進めています。今回は、その完結編。「クリア時のUIの表示」をやってチュートリアルを終えようと思います。

https://cri-synapse.com/notes-20200814/
https://cri-synapse.com/notes-20200821/
https://cri-synapse.com/notes-20200828/
https://cri-synapse.com/notes-20200904/

BoltはUnityで使えるビジュアルスクリプティングツールです。UE4の「ブループリント」のようなものですね。以前は、UnityのAssetStoreで有料アセットとして販売されていましたが、Unity社が製品を買収し、7月22日に無償化が発表されました。
 

今回もUnity社が公式で提供しているチュートリアルに沿って作業を進めていきます。

▼Unity入門チュートリアル 「玉転がし」(Roll-a-Ball) ビジュアルスクリプティング版
https://learn.unity.com/project/bolt-roll-a-ball-tutorial?language=ja
 

前回は残りアイテム数を表示するUIを作成しました。今回は、その残りアイテム数が「0」になると、クリア表示が出る処理を追加します。

ヒエラルキービューの Canvas に、UI → Text を作成します。作成した Text の名前を「WinnerLabel」に変更します。チュートリアルの内容に沿って、WinnerLabel の設定を入力していきますが、そのままだと面白くないので、文字を日本語で「あんたの勝ち!」に変更しました。ついでにサイズも文字数に合わせて微調整を入れました。

次にクリア条件の設定をしていきます。Boltの出番ですね。

GameController に「残りアイテムが0になったらクリア」になるように、ItemタグのあるObjectが見つからなかったらクリアとなる処理を追加していきます。

毎フレームごとに「Count Items ユニットの値を 0 と比較する」必要があるので、Update Event を追加し、数値を比較するための Equal ユニットも呼び出します。

「0」を表すユニット int Literal を追加して、先程追加した Equal ユニットを使用して、ItemタグのObjectの数が「0」かどうかをチェックします。

グラフにすると下図のような形になります。

前回の作業から少し時間が経過してましたが、グラフ全体を俯瞰すると、以前に何をやっていたのかがビジュアルを頼りに思い出すことができるので助かります。ビジュアルスクリプトの利点ですね。

これがプログラムだと、文字を読んだあとに処理の流れを頭で組み立てる必要があるので、ノンプログラマの自分の場合、過去のプログラムから再利用できそうな要素を洗い出すだけでもだいぶ時間と脳みそを使っていたところです。

最後にクリア表示を出すために、GameController に変数 WinnerLabel を追加します。ゲーム開始時はクリア表示は非表示にしておきたいので、WinnerLabel のゲームオブジェクトを非アクティブにしておきます。

GameController のグラフ上で、WinnerLabel の変数を呼び出し、残りアイテムが「0」になった時にアクティブ化できるように SetAvtive ユニットに接続します。

グラフにすると下図の形になります。

実際のゲームプレイの動画はこちらになります。

 
今回、Bolt を通して思ったことは、ゲームの処理の順番や必要な要素を瞬時に理解するには、ビジュアルスクリプトのほうが直感的でわかりやすい、となります。

また、プログラム言語特有の記述方法や文法を覚える必要もないのもストレスがなくていいですね。

複雑な処理には向いてないそうですが、プランナーが担当する事が多いレベルデザインでの敵の配置や動き、扉の開け閉めなどの簡単なギミック操作はこのようなビジュアルスクリプトで作業させてもらったほうがミスも少なく済んで、デバッグもやりやすいかなと思いました。

今後もスキマ時間を見つけて、Bolt を使ったプロトタイピングの可能性を探っていきたいと思います!