すだちキャンパス

すだちキャンパス

やってみたこと、学んだことなどのメモ。

Clusterでワールド(脱出ゲーム)を作ってみた

こんにちは。
だいぶ前ですが、Clusterで初めてワールドを作ったのでその紹介&メモ記事です。

作ったワールド

こちらです。
cluster.mu

これは今年の11月祭(京大の学園祭)が11月に行われなかったので、それを寂しく思い作成しました。
ちなみに、せっかくなので時計台の外部も作成したワールドがこちら↓です。
cluster.mu

f:id:sweetgohan:20201230144708j:plain
時計台に登れます!

ワールドの作り方

公式のチュートリアル

こちらのCluster Guideに、基本的なワールド作成の手順が記載されていてとてもわかり易いです。
こちらの記事の通りに作っていくと、とりあえず更地のワールドを作ることができると思います。

建物の作り方

建物は、全てUnity Pro Builderを使って作成しました。導入方法などはこちらを参考に。
これがかなり便利で、造形はもちろん、テクスチャをかなり直感的に貼れるのです。今回、テクスチャはほとんど京大で撮影した写真を使用しましたが、けっこうそれっぽく仕上がったのではないかと思っています(まあところどころテクスチャがずれていたりするのですが)。

ワールドの基本的な仕組み

さて、次はインタラクティブなワールドを作る上での仕組みを簡単に説明します。といってもほぼClusterのドキュメントに書いてあることですが・・・自分の整理も兼ねて。
clustervr.gitbook.io


まず、Clusterにはトリガーというコンポーネントがあり、使用時や衝突時などに発動させることができます。トリガーを発動させると、アイテム(それ自身含む)やプレイヤーにメッセージを送れます。このメッセージを利用してギミックを発動させます。

また、トリガーが送るメッセージには識別名以外にも数値やBoolなどの値を持たせることが可能です。
例えば、プレイヤーの移動速度を変更するギミック(Set Move Speed Rate Player Gimmick)があります。そのギミックをあるCubeに付け、さらに同じCubeに衝突時に発動するトリガー(On Collide Item Trigger)を付けます。
そしてトリガーの設定欄で、衝突開始時に「衝突したプレイヤー」に対して「Key: "speed", Parameter Type:"float", Float Value: 2.0」というメッセージを送るようにします。ギミックの方は、「Key: "speed", Target: "Player"」と設定しておきます。
すると、そのCubeの上に乗ればプレイヤーの移動速度が変わるという仕組みを作ることができます。

他にも、ボタン(トリガーを付けたCube)を押すと消えたり現れたりするオブジェクト(こちらにギミックをつけておく)などを作ることもできます。
トリガーとギミックの関係さえ分かれば、後はドキュメントやCluster Wikiを見ると色々作れるようになると思います。
複雑なエフェクトなどをつけたい場合はシェーダーに頼ることになるようなのですが、そのへんは私もまだ良くわかっていないので後日まとめたいと思います・・・。

文字が透けるのを防ぐ

Text Meshで文字を置いていたのですが、裏から透けていたのでそれを直しました。
こちら↓の記事の通りにすると解決しました。
kan-kikuchi.hatenablog.com

ポストエフェクト(未解決)

また、こちらの記事に書いてあるようにポストエフェクトを付けることもできます・・・と書きたかったのですが、付けてみたところ、スマホで見た時にものすごくチカチカしたので諦めました。理由はわからないのですが、視点を変える時にものすごくチカチカギラギラしてものすごく邪魔だったのです・・・設定の問題だとは思うのですが、よくわからず断念しました。
しかもPCで見た場合も、見た目はほとんど変わっていなかったのでちゃんとポストエフェクトされているのかがよく分からず。だれかにポストエフェクトのやり方を教わりたいです・・・。

感想

ワールド作成自体はかなり簡単に行えたので楽しかったです。建物の作成がやはり一番大変でした。
ギミックも作成は結構簡単にできるのですが、少し複雑なものを作るとトリガーがスパゲッティ状態になってくるのでそこだけちょっと大変かなという感じですね。
でも何より、やはり大きなプラットフォームだけあって結構多くの人に遊んでもらえるのが楽しいなと感じました。Twitterで呟いてくださっている方もいて、とても嬉しかったです。