Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9707

VRChatでグローバルなミラーを作る

$
0
0
1. この記事は VRchatで表示をON,OFFできるミラー(鏡)をコーディングする方法です。ミラーをON/OFFさせたときにワールドの参加者全員にON/OFFを反映(同期)できるようにします。かつ後からワールドに入室したユーザーに対してもミラーの状態を同期できるようにします。 2.どのようにするのか? 2-1 オブジェクトの準備 Asset -> VRChatExample -> Prefabs からVRCMirror を描写画面にドロップします。 VRChatExampleのInspectorのTransformの数値を設定して大きさを調整します。 ミラーのON/OFFの切り替えスイッチの働きを担うCubeを配置します。 2-2 UDON# コーディングの準備 Cubeのオブジェクト名は「mirror sw」とします。hierachy windowで「mirror sw」を選択し、Inspector windowのAddComponentをクリックします. Udon Behaviourを選択します。選択後、Udon Behaviorの欄が表示されるので、「Udon C# Program Asset」を選択のうえ、「New Program」をクリックし、C#のコードが編集できるファイル(.csファイル)を生成します。 2-3 UDON# コーディングの実施 2-2節で作成した.csファイルをオープンにし、下記のコードを入力します。 mirror.cs using UdonSharp; using UnityEngine; using VRC.SDKBase; using VRC.Udon; public class mirrorsw4 : UdonSharpBehaviour { [SerializeField] private GameObject Mirror; //ミラーオブジェクト本体 [UdonSynced(UdonSyncMode.None)] private bool mirrorEnable; //mirrorEnableは同期変数である。 //後から入室したユーザーにも初めから鏡の状態を反映する。 void Start() { RequestSerialization(); //mirrorEnableの値を後からワールドに入出したユーザーに対して同期を実施するコマンド } //OnDeserialization 変数の同期が行われると呼び出されるメソッド。このメソッドでワールドのユーザー全員に対してミラーの状態を同期する。 public override void OnDeserialization() { Mirror.SetActive(mirrorEnable); //mirrorEnable=trueの時は、ミラーを表示させる。mirrorEnable=falseの時は、ミラーを消す。 } //スイッチを押した人を「オーナ」にする関数 public override void Interact() { //スイッチを押した人を「オーナ」にする命令 if (!Networking.IsOwner(Networking.LocalPlayer, this.gameObject)) Networking.SetOwner(Networking.LocalPlayer, this.gameObject); //すべてのプレイヤに「public void mirrorOn()」を実行させる(同期させる)命令 SendCustomNetworkEvent(VRC.Udon.Common.Interfaces.NetworkEventTarget.All, "mirrorOn"); } //ボタンを押すとミラーをON/OFFする機能を担ってる。 public void mirrorOn() { mirrorEnable = !mirrorEnable; //ミラーがONのときはOFFに、OFFのときはONに切り替える。 Mirror.SetActive(mirrorEnable); //mirrorEnable=trueの時は、ミラーを表示させる。mirrorEnable=falseの時は、ミラーを消す。 } } 「mirror sw」を選択し、Inspector windowにオブジェクト名「Mirror」が表示されるので、hierachy windowの「VRCMirror」をInspector windowのMirrorにアタッチメントを行います。 作業はここまでです。お疲れさまでした。これで、グローバルかつ後からワールドに入室したユーザーに対してもミラーのON/OFFの状態の同期ができると思います。

Viewing all articles
Browse latest Browse all 9707

Trending Articles