![見出し画像](https://assets.st-note.com/production/uploads/images/29444337/rectangle_large_type_2_34db780722c48e066b035ec5bb2f9d1b.png?width=1200)
アニメーションを使わないトグルスイッチ作成
アニメーションを使わないcluster向けトグルスイッチの作成方法を解説します。
特徴
・ON/OFF状態が切り替わる
・途中入室でも同期可能
・アニメーション不使用
解説
スイッチ全体は以下のような構成になっています。
ToggleSwitchはEmptyObjectです。中にON時のアイテム、OFF時のアイテムがそれぞれ入っています。
仕組み
仕組みとしてはBool Valueをトリガーとして送り各アイテムの表示を切り替えています。
・OFFアイテムが押されたらONアイテムを表示。同時にOFFアイテムを非表示
・ONアイテムが押されたらOFFアイテムを表示。同時にONアイテムを非表示
この仕組みを実現するためにBoolValueトリガーとSetGameObjectActiveGimmickを使用します。
SetGameObjectActiveGimmickは受信したトリガーのBoolValue(True/False)に応じてアイテムを表示/非表示にするギミックです。
BoolValueは最新の値がサーバー上に保持されるため途中入室時も同期が可能です。
1. OFFアイテムからONアイテムにBoolValue=Trueのトリガー送信
→ ONアイテムのSetGameObjectActiveGimmickで受信、ONアイテムが表示される。
2. OFFアイテムから自分自身にBoolValue=Falseのトリガー送信
→ OFFアイテムのSetGameObjectActiveGimmickで受信、OFFアイテムが非表示になる。
このような動作になります。
具体的な実装
では具体的な実装を見てみましょう。以下はOFFアイテムのInspectorです。
Interact Item Triggerでオブジェクトをクリックしたタイミングでトリガーを送信しています。
ONアイテムにTrueを送信して表示、自分自身はFalseを送信して非表示にしています。
次はONアイテムを見てみましょう。
初期状態はOFFのため、ONアイテムは非表示です。OFFアイテムと同じくInteract Item Triggerでオブジェクトをクリックしたタイミングでトリガーを送信しています。
自分自身にFalseを送信して非表示、OFFアイテムにはTrueを送信して表示しています。
両方ともSetGameObjectActiveGimmickを付けるのを忘れないでください。
その他使い方
TriggerとSetGameObjectActiveGimmickを追加することで任意の他のオブジェクトのON/OFFが可能です。
配布先
解説で使用したサンプルを以下で配布しています。自由にお使いください。
こちらからダウンロード
以下のワールドで試せます。
https://cluster.mu/w/6d360927-538e-4b67-8232-ecb2f122b62c
あとがき
表示/非表示のためだけにアニメーションわざわざ使うのがめんどくさかったので別の方式で作成しました。
はじめBoolValueの使い方がわかりにくく少し悩みましたがトリガーギミックだけでトグルスイッチを作成することができました。
非表示状態でもギミックが動くというのも個人的な発見でした。