全員で同じ状態にする
VRChat では、ギミックはプレイヤーそれぞれの画面で動いています。何もしなければ、ある人がスイッチを押してライトを消しても、ほかの人の画面ではライトがついたままです。全員で同じ状態を見るには、同期を使います。
どれを使うか
| やりたいこと | 使うもの |
|---|---|
| 押した人の画面だけで動けばよい(テレポート、自分だけの演出) | そのまま(自分だけ) |
| 全員の画面で同じ状態を保ちたい(ライト、扉、点数) | 同期する変数 と 変数が変わったとき |
| その場にいる全員に一度だけ何かを見せたい(効果音、演出) | 詳細設定の「全員(All)」 |
迷ったら、同期する変数を使ってください。あとから来た人にも今の状態が届くのは、同期する変数だけです。「全員(All)」で送ったアクションは、その時点でいる人の画面でしか動きません。
同期する変数
変数を「同期する」にすると、値が全員に届きます。値を変えるのは、ふつうのアクション(「変数を切り替える」「変数に足す」など)で構いません。値を変えた人が自動でその変数のオーナーになり、全員に送ります。
値が届いたときに何かを動かすには、「変数が変わったとき」のイベントを使います。このイベントは、自分が変えたときにも、ほかの人が変えたときにも、あとから来て今の値を受け取ったときにも動きます。
いつ変数が変わったとき — ライト⋯
何をする
オブジェクトを表示・非表示⋯
対象Lamp
表示する変数: ライト
+ 何をするかを追加
組み立て方の例は、全員で共有するスイッチ にあります。
気をつけること
同期した変数は「自分だけ」で変える
同期した変数を変えるアクションを「全員(All)」で動かすと、全員が同時にオーナーになろうとして、値が人によって食い違います。値の変化はもともと全員に届くので、変えるのは押した人の画面だけで足ります。この組み合わせのカードには、Tripwire がオレンジの枠と注意のメッセージを出します。
- オブジェクトとプレイヤーは同期できないので、どれかを見分ける番号を同期して、番号から選ぶ
- 「変数が変わったとき」の中で同じ変数を変えると、変えるたびにまたイベントが動く
- 毎フレームのイベントやタイマーを「全員(All)」にすると、そのたびにネットワークへ送られる(Tripwire が注意を出す)
同期の送り方
くわしくモードでは、同期する変数があるトリガーに「同期の送り方」が出ます。ふつうは「変えたときに送る」のままで構いません。動き続ける位置のように、1 秒に何回も変わる値だけ「常に送り続ける(なめらか)」にします。