入室している人を数える部屋

入室者数を表す変数numberについて,
来場者がボタンを押して部屋に入ると数を増やし, 退出すると数が減る仕組みを作ったよ.

とりあえず使いたい人へ

  1. counter prefabをシーンにドロップしてください. (counter+textをドロップすると, 人数を表示するtextも付きます)

  2. counter オブジェクトの Warp Player Gimmick のトランスフォームにswitchを押せない場所を指定してください. (swichを押すとそこに転移します)

  3. Global 変数 number にswitchを押した人の数が入ります.

仕組み解説

使用するコンポーネント

On Create Item Trigger
オブジェクト生成時に発動するトリガー
Set Game Object Active Gimmick
設定したBoolがFalseになるとオブジェクトが見えない, 触れない状態になるギミック.
(それ以外にもアニメーターの動きに関わっていたりもするのですが…今回は割愛)
BoolがTrueになると元に戻る. 
Interact Item Trigger
オブジェクトをタップ, クリックしたときに発動するトリガー.
オブジェクトのOwnerをタップ, クリックした人に変更する.
Item, Global Logic
以下を参照されたし

On Receive Ownership Item Trigger (Involuntary)
オブジェクトの生成時とオブジェクトのOwnerが退出したときに発動するトリガー
Warp Player Gimmick
設定したSignalを受け取った人を, 設定したTransformにワープさせるギミック
Set Text Gimmick (Integral)
設定したIntegralの値を表示するギミック
補足
それぞれのコンポーネントについてより詳しく知りたい方は公式ドキュメントへどうぞ!

Ownerについて詳しく知りたい方はこちらの記事をどうぞ!

シーンとヒエラルキー

オブジェクト

counter

変数 number :
roomへの入室者数を表す変数
join signal :
来場者がroomに入室したときに送られてくるsignal
exit signal :
roomに入室した来場者が退出したときに送られてくるsignal
enter signal :
switchを押した人を部屋の中に転移させるsignal

switch

notregistered Bool :
来場者がswitchを押すとFalseになり, switchを押した来場者が退出するとTrueに戻るBool
enter signal :
switchを押した来場者を部屋の中にワープさせるsignal
receiveownership signal : 
switch生成時とswitchのownerが退出したときに送られてくるsignal

同様のswitchが最大カウント人数まで重ねられている(上記シーンでは3人分).

トリガー, ギミック, オペレーションの流れ

ワールド生成時, switchの On Create Item TriggerによってGlobalのnumber0, switchのnotregisteredがTrueになる.

来場者がswitchを押すと, switchの Interact Iten Trigger によってGlobalにjoin signalが送られ, 来場者にenter signalが送られ, switchの notregistered BoolがFalseになる. そしてその来場者がswichOwnerとなる. また, Set Game Object Active Gimmick によって押されたswitchは見えない, 触れない状態になる.
来場者にenter signalが送られたことによって, 来場者はwarppointワープする.
Global にjoin signalが送られたことによって, Global の number1増える.

switchのOwnerが退出すると, switchの On Receive Item Ownership Trigger によってswitchにreceiveownership signalが送られる. そして, switchのnotregistered BoolはFalseであるためswitchにexit signalが送られる. その後notregistered BoolはTrueに戻る. switchにexit signalが送られたことによりGlobalにexit signalが送られる.
なお, ワールド生成時やOwner退出後自動で割り振られたOwnerの退出時など, switchを押した人がいない状態でのOwner遷移時には, switchのnotregistered BoolはTrueであるためexit signalは送られない.
Globalにexit signalが送られたことによって, Globalのnumber1減る.

メモ
サンプルワールドは閉じた部屋になっているけれど, 開けたワールドでも使えないことはないと思う.

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