ローカルスイッチ
ローカルスイッチとは押した本人にのみ効果が現れるスイッチです。
他の人には効果は出ません。
ここで作るスイッチの機能は、スイッチを押すと本人だけに見えるミラーが出現し、再度スイッチを押すと消える、というものです。
このスイッチの作成方法は過去にほびわんさんが投稿しています。
今回の記事はほぼ同じ内容となっています。
こんなところに使ってます!

動作が重いので使用したい人だけ!

とても眩しいので使用したい人だけ!
スイッチの作り方
スイッチは以前紹介したスイッチ1と作り方がよく似ています。
スイッチとなるオブジェクトを用意してコンポーネントを追加してください。
Interact Item Trigger 掴めないアイテムに「使う」機能を追加し、使われたことを通知するトリガーです。Itemも自動で追加されます。
Player Logic メッセージを読み取り、計算した結果をプレイヤーへメッセージとして通知するオペレーションです。

Interact Item Triggerの設定
TargetはOwner
その横にある黒い枠にはギミックと関連づけるための文字列(Keyと言います)を入力。好きな文字列でいいですが、ここでは「Interact」とします。
ValueはSignalにしてください。

Player Logicの設定
TargetはPlayer
KeyはInteractと入力。これがトリガーと一致してないと作動しません。
続いてその下にある部分も設定していきます。
1行目は右からMirror、Boolです。
Mirrorはギミックに通知する文字列となります。
2行目は=Notを選択してください。
3行目は右からRoomState、Double、Mirrorです。
ロジックの詳しい内容についてはこちら!
これでスイッチの設定は終わりです。
ローカルミラーの作り方
最初にギミックを入れるところを作ります。

Hierarcyで右クリックして表示されるメニューからUIを選択し、PlayerLocalUI - clusterを作成します。
本人だけに見えるようにするにはこの中にオブジェクトを配置します。
ちなみに…UIとはユーザーインターフェースの略です。
次にミラーを作成します。

3D ObjectからMirror - clusterを選択します。
作成したらスイッチから見やすい位置に配置します。
大きさも適当に調整してください。

Hierarcyで先ほど作成したPlayerLocalUIの子にミラーを配置します。

コンポーネントを追加します。
Scale Constraint ゲームオブジェクトをソース (影響元の) ゲームオブジェクトのスケールに合わせてサイズ変更します。
Parent Constraint 任意のゲームオブジェクトがあたかも Hierarchy ウィンドウの他のゲームオブジェクトの子であるかのように、ゲームオブジェクトを移動し回転させます。

これらのコンポーネントは本来プレイヤーの視界に連動して表示されるUIをワールドのオブジェクトとして表示するために使用します。ほびわんさんの記事では「ワールドに固定」と言っています。

Scale ConstraintとParent Constraintの設定
この2つの設定は共通です。
Is Activeにチェックを入れる。
Sourcesにはワールドに固定したい場所の空オブジェクトを設定します。
空オブジェクトはミラーと同じ場所に配置し、名前をMirrorPosとします。
最後に表示非表示を切り替えるギミックを追加します。
Set Game Object Active Gimmick GameObjectのアクティブ状態を切り替えるギミックです。

Set Game Object Active Gimmickの設定
TargetはLocalPlayer
KeyはMirrorと入力。これがロジックと一致してないと作動しません。

Mirrorのチェックを外し、非アクティブにしましょう。
これで完成です!スイッチを押すとミラーの表示を切り替えられますが他の人からは見えません。
今回はミラーですが、3Dオブジェクトの他にパーティクルやポストプロセスなどの特殊効果、BGMなんかにも適用できるのでアイディア次第で表現できることがいっきに増えます!
複数のオブジェクトを同時にローカルにすることもできます。その場合は同じフォルダに入れて、PlayerLocalUIの下に配置します。
ワールドへの固定も忘れずに!
プレイヤーローカルUI
プレイヤーローカルUIとはゲームをしてる人にはわかると思います。
プレイヤー自身にだけ見えるステータス表示なんかのあれです。
今回の機能に追加してみましょう。必須ではありません。

全体マップと馬の現在位置が各プレイヤーの画面に表示されます
今回はサンプルの画像を使って実験場にUIを配置してみます。
このような画像を用意しました。

画像をProjectウインドウにドラッグ&ドロップして追加してください。
画像のInspectorを開き、一番上のTexture TypeというところをSprite (2D and UI)に変更します。

変更したら一番下にあるApplyを押します。
これで画像がスプライトに変更されました。
次に画像を貼り付けるオブジェクトを用意します。
UIからImageを選択します。


作成したImageを前項で作成したPlayerLocalUIの下のSafeAreaに配置します。
さて、これはいったいSceneのどこに配置されたのでしょうか?
SafeAreaというのはUIの配置を決める領域です。
実験場では建物の上空に設置されています。巨大なのでけっこう離れなければ見えません。

ありました!このSafeAreaと表示されている水色の枠内にUIを配置できます。先ほど配置したImageが表示されていますね。動かして好きな位置にしてください。
配置したImageには画像がなにも設定されていないので真っ白です。画像を設定しましょう。

先ほど追加したサンプル画像をSource Imageにドラッグ&ドロップします。
これで画像が設定されました。
配置が終わったらSet Game Object Active GimmickをUIのコンポーネントに追加して、ミラーと同じ設定にしましょう。

設定が終わったらチェックを外して非アクティブにしましょう。
これでできました!
スイッチを押すとミラーに加えて、自分だけに見えるUIが表示されます。
プレイヤーUIはそのワールドにいるプレイヤーのそれぞれの画面に表示されます。切り替え式にしてない場合はワールドにいる間はずっと表示されます。
ゲームの情報の他にも、時計やお知らせなんかを表示させるのもいいかもしれませんね!
自由な発想で自分の世界を表現してみましょう!
<<前の記事
アイテムの生成、破壊
次の記事>>
乗り物(テンプレートを利用:馬)
