【VR】Unityでシューティング風ゲームをつくってClusterにアップする(Clusterで遊ぼう日記4日目)

投稿日:2021年8月22日
最終更新日:2021年8月22日

UnityでClusterのゲームをつくる

前回までの日記でClusterのワールドをつくってアップロードした。前回はオブジェクトを並べて散策するだけのステージだったが、今期はアイテム、トリガー、ギミック、オペレーションといったClusterならではの概念を使い、簡単なシューティングゲームをつくってみたいと思う。

 

開発環境

Windows 10

Unity 2019.4.22f1 ※Cluster Creator Kitの推奨version

 

 

アイテムを手に持って弾を出せるようにする

基本的には前回つくった雪の世界のワールドをベースに、的を配置して雪玉をぶつけるようなゲームにしてみる。これについては、ほぼ以下のチュートリアル通りにつくった。解説がわかりやすいので、ほぼ詰まることもなし。

的あてゲームをつくる

一点補足しておくと、最新のCreator Kitだと、チュートリアルの頃とUnityのInspector上のTriggerのUIが少し変わっているようだ。といってもほぼ同じようなものだが、この記事を書いた時点では、以下のようになっているので注意。Sizeという項目は削除され、その代わりに+ボタンを押すことでメッセージを追加することができる。

弾をぶつける的は以下の雪だるまのアセットを使用し、弾を発射できるようにするアイテムと、アイテムから発射する弾丸は、両方とも雪の塊をイメージして3D ObjectのSphereに白い色のマテリアルを貼ってつくった。

https://assetstore.unity.com/packages/3d/props/cute-snowman-12477

完成したワールドは以下のような配置にした。射的のようなイメージで、ある程度距離が離れたところから投げられた方が楽しいと思ったので、Spawn Point(ワールド入室時にプレイヤーが出てくる場所)を壁で囲い、出れないようにした。ただ、こうすると前面の壁で視界が遮られて的を狙いづらいため、壁の中に台を設置して、台の上から狙えるようにした。まとの雪だるまはいくつか配置し、弾丸が倒れて、しばらくすると起き上がるようなアニメーションを付けた。

これでシューティング要素は一応完成。ただちょっと味気ないので、UIをつけて、雪だるまに何回当てたか文字で表示するようにしてみる。

 

UIを表示させる

多人数で同時にプレイできるClusterの特性上の制約だと思うが、UIについてはいくつか決まりがあるようだ。まず、Textなどを追加してCanvasを追加したら、CanvasにPlayer Local UI(Cluster のCreator Kitに含まれる)のコンポーネントを追加する必要がある。これをやらないと、Clusterへのアップロード時にエラーが出た。

また、Player Local UIをCanvasより少し小さいSafeAreaという領域が表示されるようになる。ここがClusterで表示される領域になるようなので、テキストなどはこの範囲内に収める。

また、UIを追加するとUnityでは自動的にEventSystemオブジェクトが追加されるが、EventSystemがあるとClusterへのアップロード時にエラーが出たので、EventSystemは削除する必要がある。

なお、UIの制御については以下のチュートリアル記事が参考になる。

オペレーション機能を使ってHPやMPを実装する

今回は的の雪だるまに当たったら+1ずつ数字をカウントアップさせるという仕組みでオペレーションを作った。まず、雪だるまに以下の赤枠のようにOn Collide Item Triggerを追加し、弾がぶつかったらcountというGrobalのSignalを送るようにする。

次に、UIのTextに以下のようにItem Ligic、Set Text Gimmickを追加し、countを受け取ったらhitNumという整数値に+1するという仕組みをつくった(※この後書くが、この方法には問題があった)。なお、hitNumはOn Create Item Triggerで0に初期化している。

あとは、前回ワールドをアップロードした要領でCluster→ワールドアップロードから必要事項を書いてアップロード。

以下が実際にCluster上で遊んでいる様子。ちゃんと的に弾を当てた数(撃破数)も表示されている。・・・のだが、マルチプレイヤーの環境で調べてみたところ、どうやら最初に部屋に入ったプレイヤーの撃破数のみが表示されてしまい、後から入ったプレイヤーが弾を当ててもカウントアップされないようになってしまっていた。

LocalのUIにカウントアップの処理をさせているのがマズいのかと思い、ワールドに空のobjectを配置し、そちらにカウントアップの処理をうつしてみたけど変わらず。うーむ、そもそもGimmickの使い方が間違っているのだろうか…。

また時間がある時に原因は調べてみようと思うが、ひとまず雰囲気は掴めたし、つくったワールドは以下で公開した。

https://cluster.mu/w/b238cf33-5810-404f-aece-099a97f9b483

実は今回のゲームを作った主目的は、Cluster GAMEJAM 2021 in SUMMERに参加するための勉強であった。すでにエントリーは済ませている。

次回の日記では、Cluster GAMEJAMへの参加記を書く予定。

 

日記まとめ

Clusterで遊ぼう日記は以下のページでまとめてます。

【VR】Clusterで遊ぼう日記 まとめ

3+

投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください