スイッチ4(オンオフ切り替え改)
スイッチギミックです。
機能としてはスイッチを押すたびにオブジェクトの表示、非表示が切り替わるというものです。が、以前紹介したスイッチ1(オンオフ切り替え)の改良版になります。
こんなところで使ってます!


スイッチ1の欠点
以前紹介したスイッチ1は解説のとおり作ればしっかり機能します。が、なんと場面によっては想定通り動かない場合があるのです。
それは多人数が参加するイベントなどでです。
オンとオフという動作をさせるためのスイッチなのですが、特定の条件でこのオンとオフが逆転してしまうのです。
理屈を説明すると長いのでここでは割愛しますが、オンとオフが逆転してしまうとイベントにおいては致命的です。
これから紹介するスイッチ4ではその問題を解決し、オンとオフが逆転しない機構となっています。
スイッチの作り方
スイッチとなるオブジェクトと用意します。
今回は2つのオブジェクトを用意し、それぞれにコンポーネントを追加します。
1つめのスイッチには以下のコンポーネントを追加します。
Interact Item Trigger 掴めないアイテムに「使う」機能を追加し、使われたことを通知するトリガーです。Itemも自動で追加されます。
Interact Item Triggerの設定
TargetはGlobal
その横にある黒い枠にはギミックと関連づけるための文字列(Keyと言います)を入力。好きな文字列でいいですが、ここでは「ObjG」とします。
ValueはBoolにしチェックボックスにチェックを入れてください。

2つめのスイッチにも以下のコンポーネントを追加します。
Interact Item Trigger 掴めないアイテムに「使う」機能を追加し、使われたことを通知するトリガーです。Itemも自動で追加されます。
Interact Item Triggerの設定
TargetはGlobal
その横にある黒い枠にはギミックと関連づけるための文字列(Keyと言います)を入力。好きな文字列でいいですが、ここでは「ObjG」とします。
ValueはBoolにしチェックボックスにチェックを入れないでください。

2つのスイッチができたと思います。
これでスイッチの設定は終わりです。
オブジェクトの作り方
オブジェクトを用意してください。
オブジェクトは3Dオブジェクトだけでなく、BGMやパーティクル、ポストプロセス等も可能です。
用意できたら次のコンポーネントを追加します。
Set Game Object Active Gimmick GameObjectのアクティブ状態を切り替えるギミックです。
Set Game Object Active Gimmickの設定
TargetはGlobal
KeyはObjGと入力。これがギミックと一致してないと作動しません。

最後にオブジェクトのInspectorの一番上にあるチェックを外して非アクティブにしましょう。
これでできました!プレビューで確認してみましょう!
1つめのスイッチを押すとオブジェクトが出てきます。そして、2つめのスイッチを押すとオブジェクトが消えます。
オンのオフのスイッチが別々に機能してる感じです。
今回作ったギミックをざっくり解説
1.1つめのスイッチでオンのObjGトリガーを通知します。
2.2つめのスイッチはオフのObjGトリガーを通知します。
3.オブジェクトのギミックがObjGの通知を受け取りますが、どちらのスイッチを押したかによってオンオフを判定して表示または非表示にします。
スイッチ1よりもスイッチ数が増えていますが、作りが非常にシンプルであるため誤動作が非常に起こりにくいです。オンオフの逆転も起こりにくいと思われます。

でも、スイッチだし1つにしたい
安定動作のためにスイッチの構造を見直して2つにしたわけですが、操作をシンプルにするために1つにしたい!と思うでしょう。
疑似的にですがこの2つのスイッチを1つっぽくする方法があります。
2つのスイッチを完全に重ねて、スイッチ自体を押すたびに入れ替わるようにすればよいのです。
オブジェクトに対して通知してるトリガーをこのスイッチにもギミックで受け取るようにすればよいのです。
ONのスイッチにコンポーネントを追加します。
Interact Item Triggeに次を追加します。
「+」を押すと追加できます。
TargetはGlobal、KeyはObjGON、ValueはBoolにしチェックを外します。
もう一つ追加します。
TargetはGlobal、KeyはObjGOFF、ValueはBoolにしチェックを入れます。
Add ComponentでSet Game Object Active Gimmickを追加します。
設定は以下
TargetはGlobal、KeyはObjGON。

次にOFFのスイッチの設定をしていきます。
ONのスイッチと逆になる感じです。
OFFのスイッチにコンポーネントを追加します。
Interact Item Triggeに次を追加します。
「+」を押すと追加できます。
TargetはGlobal、KeyはObjGON、ValueはBoolにしチェックを入れます。
もう一つ追加します。
TargetはGlobal、KeyはObjGOFF、ValueはBoolにしチェックを外します。
Add ComponentでSet Game Object Active Gimmickを追加します。
設定は以下
TargetはGlobal、KeyはObjGOFF。

最後に2つのスイッチをぴったり重ねてOFFのスイッチだけを非アクティブにします。
見た目は1つのスイッチですが、押すたびにONのスイッチとOFFのスイッチが入れ替わっています。

もっとスイッチっぽくしたい
これまでの作成でスイッチはしっかり機能するはずです。
が、使い勝手を考えるともうひとつ工夫したいところです。
ONとOFFのスイッチが同じ形で同じ色だとこれが果たして、今ONなのかOFFなのかがわかりませんよね。
数個のスイッチならそれでもいいかもしれませんが、イベントの演出スイッチなどのように数十個ものスイッチを並べた場合、ONとOFFの判別ができるようにするのは必要な機能だと言えます。
作り方を2種類紹介しますので、参考にしてください。
スイッチの色を変える
ONとOFFのスイッチの色を変えることで判別できるようにします。
「Project」のウインドウで右クリックでmaterialを作ります。
好きな色を設定してONとOFFそれぞれに色を設定しましょう。
ここではONに黒、OFFに黄を設定します。
OFFを明るい色にするのがポイントです!


お好みでEmission(光らせる)を設定してもいいですね
色の設定が終ったら、2つのスイッチを重ねてOFFスイッチ(黄のほう)を非アクティブにします。これで完成です!
できたら実際に操作してみましょう。
スイッチは最初は黒ですが、押すとオブジェクトがアクティブになると同時に黄に変わります。


オブジェクトが有効になると点灯する
もう一つのやり方です。
スイッチの色自体を変更せずに、オブジェクトがアクティブになったと同時に印が出るようにします。
スイッチの近くになにか印っぽい物を作りましょう。ここでは小さなsphere(球)を作成し水色っぽい色にしてみます。
そしてコンポーネントを追加します。
Set Game Object Active Gimmickを追加し、TargetはGlobal、KeyはObjGと入力します。これは操作しようとしているオブジェクトとまったく同じものになります。

今回はEmissionも入れてみました

最後にこの玉を非アクティブにすれば完成です!
できたら実際に操作してみましょう。
スイッチを押すとオブジェクトがアクティブになると同時に水色の玉が点灯します。これでスイッチがONかOFFかわかりやすくなりました。


筆者のワールドでもこの手法を採用しています。
数十個あるスイッチもこれでどれが有効になっているのかすぐにわかるようになっています。
さらにスイッチに文字を貼り付けて、なんのスイッチかわかるようにすると良いですね!
こちらを参考にしてください!
文字を貼り付ける

スイッチ自体は透明で、使用中になると水色に点灯するようにしています
いろいろな場面に使える
過去に紹介したスイッチ同様にいろいろなオブジェクトのオンオフに使えます。
特に多人数での表示の同期がしっかりとれるので、イベントでの使用に大変向いています。
筆者はこのスイッチの方式を採用してイベント会場などに利用しています。
みなさんもぜひこのスイッチを活用して、自由な発想で自分の世界を表現してみましょう!
<<前の記事
スタンプカード
次の記事>>
アバターだけが映るミラー
