見出し画像

【cluster】権限を持つ人だけが入れる場所を作ってみた!

こんにちは、clusterのこくsayです。noteを書くこと自体今回が初めてなので至らない点があったら申し訳ありません。本記事では、『特定の場所に権限を持った人だけが入れるギミック』の作り方を紹介します。
記事の下の方にBOOTHのURLがあります。そこで配布をしていますので緊急で必要な方、上手くできなかった方はそちらを使ってみてください。
※注意※
このギミックは通常ワールドでのみ正常に作動します。Initialize Player Triggerの仕様上、イベント会場として使用する場合には権限の保存がされません。気を付けましょう!

例えば…

↑こちらのワールドでは、権限を持っている店員さんはカウンター内に入ることができますが、お客さんはカウンターの中に入ることはできません。

↑こちらはワールドに入室した回数が一定の数を超えることによって常連ルーム、VIPルームに入る権限が与えられるようにしています。

さっそく作っていきましょう!

本記事では上で紹介した『ubiquitous』に使用している、入室した回数が一定数を超えると権限を付与しVIPルームに入れるようになるというギミックをメインに紹介します。今回は3回ワールドに入室するとVIPルームに入る権限を得るという設定で進めていきます。unityにcluster creator kitを導入済みという前提で書いていきます。

今回使用するギミック、ロジック、トリガーの一覧です。
On Join Player Trigger
Player Logic
Initialize Player Trigger
Interact Item Trigger
Warp Player Gimmick
(ここでは各Componentの説明は省かせていただきます。詳しくはCluster creator kitドキュメントをお読みください。)

1. hierarchy上で右クリック→create emptyでgame objectを作成します。このgame objectの名前を分かりやすいように”Authority”と変えましょう。

2.1.で作ったAuthorityを選び、ctrl+C→ctrl+Vを押してgame objectを複製します。こちらは名前を”VIP-pos”とします。

3.hierarchy上で右クリック→3D object→cubeでcubeを作成します。このcubeを”button”に名前を変えます。最終的に、このcubeを押すとVIPルームにワープするという形にします。

スクリーンショット (161)

4.ここから、コンポーネントを入れていきます。hierarchyにある先ほど作ったAuthorityを選び、inspectorからAdd Component→ On Join Player Trigger を追加。(target)player    join  (value)Signal   【これによってワールドに入室した時にjoinというシグナルを入室者に飛ばします。】

5.Add Component→ Player Logicを追加。(target)player  (key)join   〈Player〉count   Float  =Add   RoomState   Float   Player   count   Constant   Float   1 【4.で飛ばしたjoinというシグナルを受けとった時、入室した人に対してcountという値を1蓄積するようにしています。】

スクリーンショット (163)

6.もう一度、Add Component→ Player Logicを追加。(target)player  (key)VIP   〈Player〉 toVIP   signal  =GreaterThanOrEqual   RoomState   Float   Player   count   Constant   Float   3【VIPというシグナル(ボタンを押した時に送られる。後ほど作ります)を受けとると、countの蓄積が3以上の人はToVIPというシグナルが送られます。この数字を変えることで権限を得るために必要な入室回数を変えることができます。】

7.Add Component→ Initialize Player Triggerを追加。 (target)〈Player〉count  (Initial Value)  Float  0
【これによって前回ワールド退出時までのcountの蓄積されている数を引き継ぐことができます。】

スクリーンショット (169)

8.次にhierarchyからbuttonを選びます。inspectorからAdd Component→ Interact Item Trigger を追加。(target)Owner   VIP  (Value)Signal

9.Add Component→ Warp Player Gimmick を追加。(target)Player  (key)ToVIP そして、hierarchy上のVIP-posを(target Transform)にドラッグアンドドロップしてください。VIP-posはワープする場所になります。権限を持った人しか入れない場所の内側に配置してください。

スクリーンショット (167)

10.以上で完成になります。
unity上で作動しているのか確認を行いましょう。preview→preview停止を2回行ってから、再度previewを行います。そこでcubeを押してワープしたら成功です。


unity上でもう一度権限がない状態に戻りたい場合
上のほうのcluster→preview→settings→現在のシーンのセーブデータを削除するを押すと、保存しているkeyをリセットすることができます。これによってcountの値をリセットして権限がない状態に戻ることができます。(unity上で保存しているkeyのリセットのやり方です。clusterにアップしたワールドのkeyをリセットする場合にはこちらを参照してください。)

スクリーンショット (171)


(おまけ)限られた人にだけ権限を持たせたい場合

例えば
・カフェやバーのワールドで店員さんのみ厨房に入れるようにしたい。
・悪用される可能性があるアイテムをワールド作成者のみ入れる場所に隔離したい。
など限られた人にだけ権限を持たせることもできます。

ⅰ) hierarchy上で右クリック→create→3D Object→cubeを追加。
Add Component→ Interact item Triggerを追加。
(target)Owner  join  (Value)Signal

スクリーンショット (173)

ⅱ) hierarchyでAuthorityを選択。Component内のOn Join Player TriggerをRemove Componentで削除

スクリーンショット (175)

ⅲ) これで完成です。ⅰ)で追加したcubeを3回クリックした後、VIPルームへワープするbuttonをクリックしてワープすると成功です。

【※注意※】
限られた人のみに権限を持たせたい場合ワールドアップロード後、権限を持たせたい人だけをワールドに呼び、集まったら非公開にしてください。
cubeを3回クリックして権限の付与を終えたらワールドを非公開のままunity上でcubeを非アクティブ化
(チェックを外す)して再度ワールドの更新をかけてください。更新が終わったらワールドを公開しても大丈夫です。
【これは権限付与中に関係のない人が入って来て、誤って権限を手に入れてしまうことを防ぐためです。】

スクリーンショット (177)

最後に…

お疲れ様でした。以上が権限を持った人のみが入れる場所の作り方の説明になります。
上手くできた、上手くできなかった等の意見もお待ちしています。
また、これ以外にも多くのやり方があるためこれが最適解ではない可能性があります。
ここまで読んでいただきありがとうございました。

https://kokusay.booth.pm/items/3798297
BOOTHでこのギミックの配布をしています。よかったらお使いください!

この記事が気に入ったらサポートをしてみませんか?