こんにちは、simatten(しまってん)と申します。
この記事では「テンプレートワールドプロジェクト」の第二弾として制作した「テンプレートワールド『プログレッション』」についての解説をしていきます!

テンプレートワールド『プログレッション』を改変して作られたこのワールドは、下記URLから遊ぶことが出来ます!!
https://cluster.mu/w/c6e080d1-55f8-46ad-8468-d4822acda1a9
「テンプレートワールドプロジェクト」とは?
cluster にゲームワールドを制作する際のテンプレートとなる Unity プロジェクトです。 ゲームワールドを作るのに必要な素材が詰まっているので、一から作らずともこれに手を加えるだけで自分だけのゲームワールドを制作することができるようになっています!
詳しくはこちらの記事をご参照ください!
https://note.com/cluster_official/n/nb1c04f5e6494
導入方法
テンプレートワールド『プログレッション』が入っているプロジェクトフォルダのダウンロードは下記のリンクから!(clusterのワールドはスマホからでも遊べますが、プロジェクトフォルダはスマホでは開けません。WindowsやMac等に対応しています。)
https://github.com/ClusterVR/ClusterCreatorKitTemplate/archive/master.zip
ダウンロードしたプロジェクトフォルダの中にあるワールドを見るには、対応したバージョンのUnityを使用する必要があります。導入方法は下記のリンクから!(Creator Kitはプロジェクトに導入済みなので、「1.Unityをインストールしよう」を済ませるだけでOKです!)
https://creator.cluster.mu/2020/02/27/helloworld/
対応したバージョンのUnityがインストールできたら、早速ワールドの中身を見てみましょう!
まずはあらかじめプロジェクトフォルダを展開しておきましょう。


次にUnityHubを開いて、展開したフォルダをリストに追加しましょう。


最後にUnityHubに追加された項目をクリックすると、Unity上でワールドが開かれます!

1.フォルダ構成
プロジェクトフォルダの中身を紹介します。 重要なのはプロジェクトフォルダのAssets/ClusterCreatorKitTemplate/Progression
の中身なので、その部分に絞って紹介します。

Animations : 各種オブジェクトのAnimationデータが入っています。
AnimatorControllers : 各種オブジェクトのAnimatorController(Animationの切り替えを制御するデータ)が入っています。
Audios : BGMや効果音等の素材が入っています。
Fonts : 文字の形を設定するためのフォントデータが入っています。
Materials : Material(3Dモデルの質感を設定するデータ)が入っています。
Models : 3Dモデルのデータが入っています。
Prefabs : 一つのオブジェクトとして機能するように設定された、アイテムや地形等のPrefabデータが入っています。とにかくモノを配置して遊びたければ、この中のPrefabデータをワールドにドラッグアンドドロップ!
(Hudフォルダの中には視界に直接表示するために用意されたPrefabが入っています。PlayerSystemsフォルダの中にはPlayerの処理に関するデータが入っています。 この2つのフォルダの中身は単純にSceneの中に置いても目に見えてモノが追加されるわけではないので注意!)
(Baseと名のつくPrefabもSceneに追加しないのが吉です)
Scenes : ワールドを構成するSceneデータが入っています。この中の「Progression」という名前のSceneデータをダブルクリックで開くとワールドの中身を閲覧したり編集できるようになります!
Textures : Texture(3Dモデルに貼り付けるための画像データ)が入っています。
2.Hierarchy構成

SpawnPoins : アバターの出現位置の設定が入っています。
DespawnHeight : ステージの下限を設定するオブジェクトです。
PlayerDespawnHeight : プレイヤーが地形外に落ちた時に再出現する位置を入室時とは違う場所にするためのオブジェクトです。
Lightnings : 光源が入っています。
StaticObjects : 地形などの動かないオブジェクトが入っています。
Items : 収穫対象の鉱石など、他のオブジェクトやプレイヤーに対して作用したり作用されたりするオブジェクトが入っています。
Player : プレイヤーに関する処理の書かれたオブジェクトが入っています。
PlayerLocalUI : UI(HUD)を表示するためのオブジェクトが入っています。
Particle System : 夜空のキラキラはこれで発生させています。
Bgm : BGMはこれで鳴らしています。
WorldGateToGameWorldCenter : ゲームワールドセンターへ繋がるゲートです。
3.仕様説明
今回のゲームは、
ワールドに散らばる鉱石を集めて納品することで、お金や経験値をゲット!
→お金や経験値によって能力を購入したりレベルアップする!
→更に鉱石を効率よく集められるようになったり、新しい採取場に行けるようになる!
………
といったゲームサイクルが回るようになっており、「プレイを続けるほどプレイヤーが強くなる!」今回のテンプレートはそんな仕組みの搭載されたゲームとなっています!
※ゲームサイクルとは?↓
https://g-dx.jp/docs/%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB
Itemの紹介

鉱石:画面上部の鉱石ゲージに空きがあれば、タップして採取することができます。
採取してからしばらくすると復活します。 採取する時に気持ちいいリアクションをしてくれます。

納品箱:タップすると、集めた鉱石を全て納品できます。
納品した分だけ、画面下部の経験値ゲージと画面右下部のお金が溜まります。
プレイヤーの経験値が溜まってレベルアップした時にファンファーレを鳴らしてくれる、気のいいヤツです。

アビリティ缶:空の缶を使用すると、画面左下の枠に入っているプレイヤーのアビリティを缶に抽出することができます。
アビリティで満たされた缶を使用すると、缶の中のアビリティをプレイヤーが獲得することができます。
いらなくなったアビリティは他のプレイヤーにプレゼントしてみましょう。 喜んでくれるかも!
アビリティで満たされた缶は、実は足場にもなるとか……?

商品棚:商品として中身入りのアビリティ缶が入っており、タップした時にお金が足りていれば購入してアビリティを入手できます。
また、画面左下部のアビリティ枠がすべて埋まっていると購入できません。 その場合、空のアビリティ缶を使用することでいずれかのアビリティを抽出する必要があります。

ワープポータル:乗るとワープができます。
一定レベル以上でないと利用できないワープポータルも存在します。 レベルを上げて更なる深みへ……
4.改変のススメ!
ところでこれも前弾の「テンプレートワールド『シューター』」と同じく「テンプレートワールドプロジェクト」の一種なので……。
そう、またしても自分の好きなように改変できるのです!! あんな魔改造もこんな魔改造も!!
例えば……
・たくさん鉱石を配置してウハウハ!
・レアな鉱石を作ってみる!
・アビリティをガチャによってランダムに取得できるようにする!
・商品として売ってる能力のレベルをめっちゃ上げて最強能力を購入できるようにする!
・もっとたくさんのエリアを用意して本格的に冒険できるようにする!
・アビリティとの相乗効果を起こせるような、手に持てるアイテムを用意する!
・鉱石をモンスターに変えてRPGを作る!
・対人戦が出来るように組み替えてMOBAを作る!
※MOBAとは?↓
https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%83%90%E3%83%88%E3%83%AB%E3%82%A2%E3%83%AA%E3%83%BC%E3%83%8A
などなど……
5.改変してみよう!
ステージ構成の改変方法については、こちらの記事(https://creator.cluster.mu/2020/10/09/templateworld-shooter/)の「5.改変してみよう!」に記載があります。
アビリティやアビリティの所持枠の追加方法
改変にあたって知っていると便利な、アビリティ(Ability)やアビリティの所持枠(Slot)の仕様についての解説を書いていきます。
AbilityやSlotを追加するには、まずPrefabs/PlayerSystems
の中のPlayerを開きましょう。

開いたら、Playerの中にPrefabs/PlayerSystems/Abilities
内に用意してあるPrefabを追加すると、アビリティやアビリティの所持枠を追加できます。

Slotを追加した時は、Slotsの"availableSlotsCount"
の項目をSlotの数に合わせるのを忘れないようにしましょう。 ちなみにこの数値をゲーム中に変更することで、有効なSlotの数をゲーム中に変更することもできます。

追加したスロットの表示方法
ここまでの作業で機能的にはSlotが追加されていますが、追加したSlotはまだ画面に表示されません。
追加したSlotを表示させるためには、まずPrefabs/Hud
内のPlayerLocalUIを開きましょう。

開いたら、今度は同ディレクトリ内のAbilityIconsフォルダを開き、追加したいSlotを下のようにドラッグ&ドロップします。
これで追加したスロットの表示が完了しました。

新しいアビリティの実装方法
新しいアビリティを実装するには、まず未使用のアビリティ用Prefabを書き換えていきましょう。
今回は例としてレベルを偽装できるアビリティを作ろうと思うので、ID5のアビリティを「LevelCamouflage」という名前に書き換えます。

アビリティを取得した時の処理は、先程名前を書き換えたPrefabの中の"ApplyAbilityId.(アビリティのID)"
がKeyになったPlayerLogicに書き込みましょう。
"applyingAbilityLevel"
はその名の通り取得したアビリティのレベルです。
ここでは、アビリティのレベル×10だけプレイヤーのレベルを増やす処理をしています。

アビリティを外すときの処理は、"RemoveAbilityId(アビリティのID)"
がKeyになったPlayerLogicに書き込みましょう。
"removedAbilityLevel"
はその名の通り外すアビリティのレベルです。
ここでは、アビリティのレベル×10だけプレイヤーのレベルを減らす処理をしています。 これでアビリティを取得する前と同じ状態になります。

処理が書けたら、Prefabs/PlayerSystems
内のPlayerを開きましょう。

開いたら、ドラッグ&ドロップ!

これでアビリティを追加することができました。
次はアビリティのアイコンの追加方法を記載します。
新しいアビリティのアイコンの追加方法
このテンプレートにおいてアビリティのアイコンを表示する箇所は
・UI内のアビリティ枠のアイコン
・アビリティ缶のアイコン
・商品棚のアイコン
の三つが存在します。
それぞれに追加する方法を記載していきます。
まずはUI内のアビリティ枠のアイコンを追加していきます。Prefabs/Hud/AbilityIcons
の中にあるAbilityIconBaseを開きましょう。

開いたら、今回追加したアビリティのIDが5なのでNone.5を選択し、ImageのSourceImageを任意のアイコンに変更します。
(今回は仮にカバンのアイコンにしています。)

これでUI内のアビリティ枠のアイコンへの追加が完了しました。
次にアビリティ缶のアイコンを追加していきます。Prefabs/AbilityCans
の中のAbilityCanBaseを開いたら、同じようにNone.5を選択してImageのSourceImageを任意のアイコンに変更します。
アビリティ名を入れるTextの変更もしておきましょう。

これでアビリティ缶のアイコンの追加が完了しました。
最後に商品棚のアイコンを追加していきます。Prefabs/AbilityProducts
を開き、中のBase以外の適当なPrefabを複製しましょう。

複製したら、下のようにアイコンや名前を変更しましょう。
購入できるアビリティも変えたいので、abilityIdの項目を今回追加しているアビリティIDである5に変更しています。

これで商品棚へのアイコンの適用が完了しました。
3つ目以降のSlotに対応したアビリティ缶の追加方法
Prefabs/AbilityCans
に、各Slotに対応したアビリティ缶の生成ボタンが入っています。
これをSceneに追加すればOKです。

ワープポータルの複製
レベル制限付きのワープポータルはPlayerにSignalを飛ばす必要がある都合上、複製した時に個別にIDを変える必要があります。
複製する時は下のように数値を変更しましょう。

改変する時は以上の事を踏まえると吉です!
ちなみに、「もっと自由に改変して遊びたい!!」という方はこのページ https://clustervr.gitbook.io/creatorkit/ がオススメです!
各種コンポーネントについての説明が載っているので、アイテムについているコンポーネントを照らし合わせながら改変していくと様々な機能への理解が深まるかもしれません!
というわけで、前回のテンプレートワールドに引き続き今回もステージ構成を改変しております!

今回の改変例は探索しがいのあるワールドとなっています!ぜひぜひ、下記のリンクから遊びに来て下さいね!
https://cluster.mu/w/c6e080d1-55f8-46ad-8468-d4822acda1a9
ちなみにワールドをcluster上にアップロードする方法は下記のリンクから!
https://creator.cluster.mu/2020/03/05/howto-world-upload/
その他、初心者用の記事は下記のリンクにまとめてあります!
https://creator.cluster.mu/category/%e3%81%af%e3%81%98%e3%82%81%e3%81%a6%e3%81%ae%e3%83%af%e3%83%bc%e3%83%ab%e3%83%89%e4%bd%9c%e6%88%90/
記事を見てくださったあなたも是非、改変を楽しんでみてもらえると嬉しいです!
今回のテンプレートワールド『プログレッション』は継続してプレイできるゲームの基盤として有用ですので、これまでのワールドとはまた違った楽しみ方のできるワールドが作れると思います! ワールド制作、是非是非お楽しみ下さい~!