
CyanTriggerでVRC脱出ゲームを作りたい②ーパスワードギミック・カチカチ編ー
前回の記事では、"CyanTrigger"の"OncollisionEnter"を用いて、鍵とドアのコライダーがぶつかった時にドアが開くギミックを作りました。また、おまけとして"Interact"すると音が鳴るギミックを作りました。
"Interact"と"OnCollisionEnter"を応用することで、例えばボタンをInteractすると隠し扉が開き鍵が出現するギミックなど、さまざまな演出が可能です。
今回は"CyanTrigger"を使って脱出ゲームの定番、パスワードギミックを作ります。こちらの記事では、まずパスワードギミックのオブジェクトをInteractすると数字が切り替わるギミックを作っていきます。

何をするの?
それはすなわちパスワードギミックの作成です。イメージとして、まず次の画像をご覧ください。

また、パスワードギミックの作成と言っても、大きく二つの手順に分けられます。
①数字ボックスの切り替え
とりあえず目に見える部分から作ります。4つのボックスが並んでおり、それぞれInteractするごとに数字が変わる、というものにします。

②数字ボックスの値が正解か否か判定するギミックを作る
今回は、それぞれの数字ボックスの番号を別の場所に格納しておき、それの数値を判断して、正解と一致していた場合アクションを起こす、という仕組みにしようと思います。(②について、現段階では何を言っているか分からなくても大丈夫です)
こちらの記事ではまず「①数字ボックスの切り替え」の説明をします。②は次回以降また記事を分けて説明しようと思います。
では、次から実際の手順説明に移ります!
準備するもの
数字ボックスのオブジェクト(番号1~7が書かれたもの)計7個
ボックス切り替えの際の効果音
※今回は数字ボックスを格納するフレームも作りましたが、なくても大丈夫です!
数字ボックス切り替えギミック作成手順
今回は数字は1~7までで、1回Interactするごとに1→2、2→3、……というように7までカウントアップされていき、限界(7)まで達したら1に戻るものを作ります。
具体的には、1が書かれたオブジェクト(以下、「ボックス1」)をInteractするとボックス1が消え、同時にボックス2が出現するというのを繰り返していきます。
そのために、前回の記事で説明した"Interact→gameobject set active"を使います。
①"Box Collider" "CyanTrigger"の追加
まず数字1が書かれたオブジェクト、数字2が書かれたオブジェクトをHierarchyに入れたら、それぞれに"Inspector"の"Add Event"から"Box Collider"をつけます。
次に、数字1が書かれたオブジェクトに"Add Event"から"CyanTrigger"を追加します。
②"CyanTrigger"ーボックス2を出現させる処理ー
"CyanTrigger"の"Add Event"で"Interact"を選択したら、"Actions"を"GameObject.SetActive"とし、"GameObject"にボックス2(ここでは"alphabet_box_A_2")を入れます。ここの"Input"は"True"にします。これで、ボックス1をInteractすると、ボックス2が現れるようになりました。

③"CyanTrigger"ーボックス1を消す処理ー
②で使ったボックス1に、さらに"Actions"を追加していきます。"Actions"タブの下の+をクリックし、"GameObject.SetActive"を追加したら、"GameObject"に数字1が書かれたオブジェクト(ここでは"alphabet_box_A_1")を入れます。そしてここの"Input"を"False"にします。これで、ボックス1をInteractすると、そのオブジェクトが消えるようになりました。

④"CyanTrigger"ーInteractしたら音を鳴らす処理ー
ボタンクリックの効果音を入れていきます。今回は、「効果音ラボ」さんのものを使わせていただきました。
まず"Hierarchy"の何もない所で右クリックして、"Audio>Audio Source"を選択し、適当な名前(今回は"button_sound")をつけます。
次に効果音のファイルを"Assets"に入れます。この効果音をヒエラルキー上の"button_sound"にドラッグ&ドロップします。
そこまでできたら、"button_sound"のinspectorの"Play On Awake"の✔を外します。

⑤ボックス1~7まで繰り返し
ボックス2を押したらボックス3が現れてボックス2が消えるように、ボックス3を押したらボックス4が、……のようにずらしながら、ボックス1で行った①~④の操作を繰り返します。
とりあえず(完成)!
これで、いちばん左のボックスの1~7までの切り替えが完成しました!
この後に、さらに追加するものがあるので、まだ横に4つコピペはせず、このまま保存しておきましょう。
試しに再生▶ボタンを押して確認してみましょうか。
おお~!!動いた!!これはもう脱出ゲームなのでは?!すごすぎる……!!

一旦おわりです
お疲れ様でした!
次回はパスワードギミック作成の後半に入っていきます。そちらもどうぞよろしくお願いします!!
参考にしたサイト等
Special Thanks
りーふでさん