
PICO4を購入してから「メタバース」というやつにハマっています。
なかでもVRchatは初対面の人とも気軽に話ができるし、e-sports系と比べて殺伐としていないのが落ち着いてていい感じ。
ハマっているうちにVRchat内で移動が出来るワールド(プレイヤーが歩き回る空間)を自分で作ることも気になってきて色々調べました。
もともとカメラ趣味の自分にとって、いろんなワールドを巡ってメタバース内の北海道や名古屋、宇宙やファンタジー世界にいって撮影が出来るの本当に素晴らしいなと思いました。
ただ歩き回るだけだと物足りない&景色が綺麗なワールド系はセンスないので無理そうなので、個人的に「逃げゲー」を作りたいと思ったのがきっかけです。
まず「逃げゲー」についてどういうものをイメージしていたかは下記を参照してください。
また、ワールドについてはCiberCityEscapeからどうぞ!プレイできる方はまず遊んで頂けるとどんなものかわかるかと思います。
Contents
逃げゲーを作ってみる
本題に入っていきます。逃げゲー制作にあたり行ったアクションは下記の通りです。
◆Unityアセットストアで舞台となる街を購入→配置
◆NPC配置→追従モーション&つかまったら入口に戻されるギミック導入
◆特殊ギミック配置→ただ一方方向に逃げるだけだと面白くないので、一部ギミックを採用しています
まずはワールド制作
ワールドは実際のプレイエリアで、舞台となる場所です。当初はターミネーターのような敵キャラをイメージして配置しました。
それに合わせてサイバーパンクっぽい世界観を用意。
ちなみに自分でモデリングしたわけではなく、Unityアセットストアから約4000円で購入しています。
Blenderを使って当初はモデリングしましたが、ちょっとした小物を作るだけでも相当苦労します……。
しかもクオリティ低すぎたので、マジで時間とセンスがないと無理だなと諦めました。
全体的な雰囲気や一部のオブジェクト配置を変えたものの、ほぼそのまま使っています。
これをUnity上で配置するだけで一気にそれっぽくなるのがうれしいですね!
ゲームスタートの入り口をくぐった後の画面
続いて敵キャラクターを配置する
逃げゲーって捕まったらゲームオーバー的なのがスリルがあって楽しいと感じています。
なので敵キャラのビジュアルがホラーである必要はなく、そういう見た目が苦手な方がいると思うので避けることにしました。
当初採用していたNPC
サイバーパンクっぽいエージェントにしようと考えていましたが、上記キャラクターは走るとめちゃくちゃ怖かったです。
VRでプレイすると必要以上に驚かせてしまうと思い、下記に変更しました。
見た目はかわいらしいVRchat想定アバターです。ただ今回はバ美肉おじさん用途ではなく、ゲームの敵キャラクターとして採用しています。
そのため、無表情で歩きモーションまたは走りモーションのみを適用し、アンドロイド感を出します。
basic-motions-freeを割り当て
basic-motions-freeというUnityにて無料配布されるモーション設定アセットをインストールし、アバターのアニメーションにドラッグ&ドロップ
basic-motions-freeをインポートすると、「walk」や「run」があります。
こんな感じのアイコンです。
これをアバターの右上にあるAnimatorへドラッグ&ドロップ
これでNPCにモーションを割り当てました。棒立ちから一歩前進です。
ただ、これだとその場でモーションを行うだけで主人公に向かって追いかけたり、つかまってもゲームオーバーにはなりません。
あくまでデフォルトのTポーズ状態から「モーション」を割り当てただけです。
追従機能を導入
どうやれば逃げゲーが作れるのか、すごく調べましたし最も苦労したポイントです。
情報がなくてリアルに2~3日ぐらいかかっています。なのでこれから作る方にはムダな時間を費やしてほしくないので結論だけ書きます。
ナビメッシュを作成する
Navigation ウィンドウ (Window > AI > Navigation) より
Objectタブを選択しNavigation Staticにチェックを入れ、Bakeタブを選択しBakeを押します。
するとマップのNPCが歩き回れる箇所が青色になるかと思います。坂道や階段が青くならない場合は、上記の傾斜を少しいじってまたBake。
注意しないといけないのは、オブジェクトを動かしても再度Bake作業を行わないと、オブジェクトが配置される前の状態でNPCが歩き回ります。
逃げゲーを作っていると、ちょっとここ難易度高いかも……と思って壁を作っても貫通してNPCがやってきます。
ちなみにNavigation meshは微調整が難しいです。とはいえ無料かつ今回の用途では十分なので、どうしても上手くBakeができない場合はオブジェクトの配置を工夫して妥協しましょう。
Simple-Aiを導入
右側のSimple AIをクリックし、ダウンロード
続いていよいよNPCに追従機能を持たせます。Unityにも有料で追従アセットは販売されていますが、VRchatでは実運用がうまくいきませんでした。
Simple AIをダウンロードし、インポート。
アバターのInspectorよりAdd Compornentで Rigidbody、Navmesh Agent、Box Collider、Basic Player Chasing AI(U# Script)を追加します。
役割はあまりわかっていませんが、Navmesh Agentは先ほどBakeした青いエリアの移動が可能という指示を出し、
Basic Player Chasing AI(U# Script)はVRchatのワールドにやってきたプレイヤーを追いかけるようになります。
ちなみにローカル作動なので、複数人でプレイしてもそれぞれNPCが出現することになります。
ゲームオーバーギミック
ゲームオーバーにはパススルーテレポートを使用しています。
2つテレポートの扉を用意し、片方はスタート地点、もう片方はNPCのCloth(服)につけています。
通常はAとB地点を行き来するために用いるようですが、NPCにぶつかるとスタート地点に戻されるという一方通行を作ることでゲームオーバーギミックとしています。(正しい使用方法なのかはわかりませんが笑)
扉のビジュアルは削除しているので、元がテレポート用の扉だったと気づく人はあまりいないと思います。
こちらの使い方は実際にパススルーテレポートをダウンロードした際の説明書をみたほうがよいので割愛します。
これすごく万能で、今回作ったワールドの1階→2階への移動や、反対から入るとテレポート先でも反対から出るといった動作になるので、
裏ルート(?)にもいけるようにしています。また、扉を2個重ねることで引っ掛け的な要素もあったり。
こだわりポイント
今回作った「逃げゲー」ワールドのこだわりポイントを紹介することで、これから作る人に少しでも参考になれば!
・各フロアに追従するNPCを配置していますが、テレポート先をかけ離れた場所にすることでワープ先ですぐに逃げないといけない状況を避けている(ずっと逃げる状態だと緩急がないので、あえて余裕を作っている)
・扉を2個重ねることで、表と裏でそれぞれ異なる出口になる
・パススルーテレポートのギミック特性をいかし、裏から入った時に通常入れない場所に行けるようにしている。
・一定時間待ってからテレポートしないとゲームオーバーになる仕組みにしている(4階→3階への移動時)
・怖い見た目のキャラクターを避けた(VRchatって癒しを求めにくる方が多く、ホラー耐性ない方も多い印象)
・その他使用ギミック「ジップラインシステム」 「グラップネルガン」 作者のとりすーぷさん天才だと思う
何か不明なことなどあればお気軽にご質問ください~!