見出し画像

CyanTriggerでVRC脱出ゲームを作りたい①

 こんにちは。ajiと申します。
 VRCでワールドを作りたい!がプログラミングぜんぜんわからん投稿者がCyanTriggerを使って脱出ゲームワールドを作ってみた、という記録です。

  • プログラミングしたくない!

  • とりあえず動けばいい!

  • SDK3でとりあえず何もないワールドのアップロードはできる

という方に向けた記事です。

 このやり方が最適解かは分からない(たぶん最適解ではない気がする)うえに、間違いも含まれているかもしれないのですが、こうやったら現時点で一応動いたよ!という記録です。
(質問などいただいても、私の知識不足ゆえにお答えできない可能性が高いです……どうかご了承ください……)


こちらは記事とは何の関係もないVRCでの自撮りです。イリスちゃんとてもかわいいですね。

CyanTriggerの概要

 まず、CyanTriggerについてはこちらのリンクをご覧ください。
 SDK2のVRC_TriggerでできたことをSDK3でできるようにするもの?です(たぶん)。


公式ドキュメント他、参考にした記事

 本記事を書くにあたり、参考にした記事やワールドは以下の通りです。


 とても詳しくコメントを書いてくださっているのですが、私の基礎知識がなさすぎるせいで、理解することすら難しかったというのが本当のところです。

 公式の他には、次のような記事がありました。こちらも参考にさせていただいております。

 CyanTriggerの作者さんが丁寧なコメント付きでワールドをboothに置いてくれているのでそれを参考にするのがいちばん良いのだとは思いますが、それよりももっとざっくりの方法でやってみたよーという報告です。

鍵でドアを開ける

 今回は、CyanTriggerの"OnCollisionEnter"を使い、鍵のコライダーをドアのコライダーにぶつけると、ドアが開くという仕組みにしました。
 ドアが開くアニメーションを作ったほうが丁寧なのだとは思いますが、今回は閉じた状態のドアが消えると同時に開いた状態のドアが出現するというものにしました。
 少しでもドアが開いた感を出すために、効果音を使うことにしました。

用意するもの

・鍵オブジェクト
・ドアオブジェクト(閉じた状態・開いた状態の両方)
・部屋オブジェクト
・効果音(ドアが開く音、鍵が開かない音)

効果音は、以下のサイトのものを使わせていただきました。

 鍵とドア、部屋は、私がblender及びunityで作ったものを使いました。
 まずは部屋、ドア、鍵を好きな位置に配置します。

好きな位置にオブジェクトを配置します

①閉じたドア、鍵にBoxColliderをつける

 今回はcolliderがぶつかったら作動する、という仕組みにしたいので、まず閉じたドアと鍵にBoxColliderを付けます。
 ドア、鍵のInspectorの"Add Component"からそれぞれ"Box Collider"を追加します。

②鍵に"VRC Pickup"をつける

 鍵は手で持てるようにしたいのでInspectorの"Add Component"から"VRC Pickup"を追加します。(この時に"Rigidbody"も勝手に追加されますが、そのままにしておいてください。)

③閉じたドアに"OnCollisionEnter>GameObject.SetActive"を設定

 まずは、「こうしたら、こうなる」の「こうしたら」の部分になる条件を入れます。
 ここでは閉じたドアに"Add Component"から"CyanTrigger"をつけます。次に、"CyanTrigger"の"Add Event"から"OnCollisionEnter>GameObject"をつけます。
 閉じたドア(aji_simple_escape_door)に鍵をぶつけたら開く、としたいので、GameObjectにはヒエラルキーにある鍵(aji_key)を入れます。

条件の設定ができました

④開いたドアが現れるようにする

 閉じたドアに鍵をぶつけたら、開いたドア("Door_open")が出現するようにします。
 "Actions"に"GameObject.SetActive"を入れたら、"GameObject"に"Door_open"を入れます。
※この時、"Input"の横のボックスに✔を入れて"True"にするのを忘れないでください!

Falseだとうんともすんともいいません

 また、ヒエラルキー内の"Door_open"はインスペクターの✔をはずしておきましょう。(開いたドアは初期状態では見えていなくていいので)

⑤閉じたドアと鍵を消す

 開いたドアが現れた状態になると同時に、閉じたドアにはいなくなってもらいます。さっきとほぼ同様の手順です。
 "Actions"に"GameObject.SetActive"を"GameObject"に"Door_close"と"aji_key"を入れます。ここでは"Input"を"False"にします。

閉じたドアと鍵が消えます

⑥Audio Sourceを設定

 今回はあたかもドアが開いているような雰囲気を醸し出すことで技術不足を補うという作戦をとりますので、効果音を設定します。
 ヒエラルキーで右クリックしたら、"Audio>Audio Source"を選択し、適当な名前(今回は"1st_door_open_sound")をつけます。
 また、入れたい効果音をAssetsに入れ、その効果音をヒエラルキー上の"1st_door_open_sound"にドラッグ&ドロップします。
 次に、"1st_door_open_sound"のinspectorの"Play On Awake"の✔を外します

ここの✔を外さないと、起動と同時に音が鳴ります

⑦ドアが開く音を付ける

 "CyanTrigger"の"Actions"から"Audio Source>Audio Source.Play"を選択します。次に"Audio Source"に先ほどつくった効果音("1st_door_open_sound")を入れます。

ガチャリ

 これで、ドアに鍵をぶつけると、ドアが開くようになりました。
 試しに上の再生ボタン(▶)を押して見てみましょう。

わあぁ~!開いた~!!すご~いっっ!!

 ドアが開きました!!うれしい!!!

おまけ

 プレイヤーが鍵を持たずに"Interact"したらドアをガチャガチャする音が鳴る(だけでドアは開かない)ようにすることで、脱出ゲームにさらに風味を追加していこうと思います。
 まずはドアが開く時の音を追加したのと同様の手順で、"Audio Source"を作成して、ドアが開かない時の効果音を入れます。
※Inspectorの__"Play On Awake"の✔を外すのをお忘れなく!
 次に"Door_close"に"CyanTrigger"の"Add Event"で"Interact"を選択し、"Actions"に"Audio Source>Audio Source.Play"を入れます。

ムムッ!!ただInteractしても開かない……泣

終わりです

 他にも部屋は作っているので、続き書けたら書きたいなーと思います。
 読んでくださり、ありがとうございました!