Guide2 のバックアップ(No.8)


 BroadcastカテゴリはSDK2のVRC_Triggerでは主に次のプルダウンに相当します。

guide2_1.png

 また、Randomize、Delay in Secondsの設定もBroadcastで行います。

 

 Trigger2to3では、トリガを引いた本人のみ動作させる場合はBroadcastLocalを使用し、トリガを引いた本人以外にも動作させる場合はBroadcastGlobalを使用します。Broadcastカテゴリのモジュールはこの2つのみです。

 Broadcastのパラメータは次の通りです。

パラメータLocal内容
Send Targetなし誰に動作させるか。Globalの場合はAll(全員)に動作させるのが通常。Ownerとは、BroadcastGlobalがアタッチされているGameObjectのオーナー。
Usable Playerなし誰がトリガできるか。Masterのみ、Ownerのみに使用制限をかけることができる。
Buffer Typeなし後から入ったユーザーに状態を再現させるため、トリガを記録するか。1つ前だけ記録する場合はBuffer One。全て記録する場合はEverytime。
Delay in SecondsありActionの発生を遅らせる秒数。
RandomizeありActionの発生をランダムにするか。(確率はそれぞれのActionのRondom Avg)
Common Bufferなし複数のトリガが1つのものを動作させる場合、正しい順番でBufferできるようにするためのモジュール。詳細は後述。
 

 VRC_Triggerのプルダウンに対する、Trigger2to3のモジュールとパラメータは次の通りです。

VRC_TriggerTrigger2to3モジュールUsable PlayerBuffer Type
AlwaysBroadcastGlobalAlwaysEverytime
MasterBroadcastGlobalMasterEverytime
LocalBroadcastLocal--
OwnerBroadcastGlobalOwnerEverytime
AlwaysUnbufferdBroadcastGlobalAlwaysUnbufferd
MasterUnbufferdBroadcastGlobalMasterUnbufferd
OwnerUnbufferdBroadcastGlobalOwnerUnbufferd
AlwaysBufferOneBroadcastGlobalAlwaysBufferOne
MasterBufferOneBroadcastGlobalMasterBufferOne
OwnerBufferOneBroadcastGlobalOwnerBufferOne
 

Common Bufferについて Edit

 Bufferによる途中入室者への再現をそれぞれのBroadcast単位で行うと、次の図のように1つのオブジェクトに複数のBroadcastが干渉している場合、再現の順番が変わってしまい、結果が実際の操作と食い違ってしまいます。

guide2_2.png

 このようなケースで正しい再現とするため、独立したGameObjectに「T23_CommonBuffer」を設定してください。それぞれのBroadcastGlobalとCommonBufferが結びついていると、それらのBroadcastのトリガ発生順が記録され、実際の操作と再現結果が食い違わないようになります。

guide2_3.png
 

 このようなケースでなければ必要ではないですが、

 実際のところ、SDK2ではワールド全体で履歴管理されていたため、全てのVRC_Triggerに共通のCommonBufferがあったようなものです。

 Bufferを使用する場合、とりあえず深く考えずにCommonBufferを1つ用意してみるのがいいでしょう。

 (後から用意した場合、CommonBufferの「Join Empty Broadcasts」ボタンで一括組み込みできるようになっています。)