PlayerMods はワールドでのプレイヤーの設定を設定(変更)する機構。
プレイヤーがジャンプ出来るようにしたり、移動速度を変更できる。
追記2
VRC_PlayerModsでの移動速度とジャンプ設定を随時変えることは出来ない(一個の設定しか使えない、切り替えは壊れていて動かない)と思われていたが動いた、とのこと。元ツイートのリプに設定例のスクショあり。いつの間にか修正され動くようになったのか元々動いていたのかは不明 https://t.co/gpz6SAMomq
— naqtn(なくとん) (@naqtn) October 16, 2019
VRC_PlayerModsのisRoomPlayerModsはチェックせずにおく。VRC_Trigger のアクション追加は Events from Scene メニューから AddPlayerMods(有効にする場合)か RemovePlayerMods(無効にする場合)を選ぶ。VRC_TriggerをAdvance Mode にしてSendRPC アクションの Targets は Local にする。
— naqtn(なくとん) (@naqtn) October 16, 2019
RemoveにつづけてAddを行って別の値に切り替えようとする場合は、AddをするトリガーのDelay in Secondsに0より大きい値を入れて少し動作を遅らせる必要がある(別フレームで実行させる)
— naqtn(なくとん) (@naqtn) October 16, 2019
追記1
この記事が書かれた後、使い方が少しわかった部分があります。 さしあたりポイントだけを列記します。
prop
は動作する。⇒ VRChat 技術メモ帳 | VRC_PropApistrafeSpeed
は横移動(カニ歩き)の速さ- 初期状態では適用せずに任意のタイミングで追加することは出来る。ただし一回限り。VRC_PlayerMods を持つオブジェクトを初期は inactive にしておき、適用したいタイミングで active にする。ローカルで変化させればそのプレイヤーだけに適用可能とのこと。 https://twitter.com/zi_zi_neet/status/971231496781680640
使い方
- VRC_PlayerMods コンポーネントを任意の GameObject に追加する。
- prefab VRCWorld を使用しているのならばワールドの特性の記述を一か所にまとめる意味で、そこに追加するのが分かりやすいだろう。
isRoomPlayerMods
を有効にする。- 追加直後のデフォルトでは無効になっているのでチェックを入れる
- さらにその中に具体的な設定値である“Mod”を追加する。
- "Add Mods" ボタンでダイアログが開く。プルダウンメニューから追加したい項目を選ぶ
- プレイヤーがワールドでジャンプできるようにするには
Jump
を追加するjumpPower
で飛び上がる量(距離?)が変わる
- プレイヤーの移動速度を変えたい場合は
Speed
を追加するrunSpeed
は走りの速度walkSpeed
は歩きの速度strafeSpeed
は(おそらく)機銃掃射時の移動速度(なんだこれ? Gun を発射しながらの移動速度か?多分今は使えない)
- プルダウンメニュー中の他の項目は現在(2018/1 0.12.0p3)機能しない。
調査メモ
- VRC_PlayerMods を任意の GameObject に追加した後に、さらにその中に具体的な設定値である“Mod”を追加する。
- (VRC_EventHandler が同時に必要。存在していなければ同時に追加される。)
- VRC_PlayerMods API: https://docs.vrchat.com/docs/vrc_playermods
- 具体的な Mod は以下
- ただし現在の実装(2018/1)で有効なのは
speed
とjump
のみで他は動作しないとのこと。(新しくて使えないのではなく、古いのが残っているのだろう) Jump
アバターがジャンプできる量。指定が無い場合にはジャンプできない。Speed
アバターが移動する速さVoice
ボイスチャットの届く距離- 参考:Voice 設定は VRC_SceneDescriptor にある。
Room Keys
ワールド全体で有効なキーボード入力を特定の GameObject へ配送する定義(らしい)Health
プレイヤーの Health 値の初期値と、ゼロになった時の処置(だろう)Gun
ワールドで使われる Gun の定義(だろう)Prop
キーなど入力をアバターのリグに接続するもの(か?)
- ただし現在の実装(2018/1)で有効なのは
isRoomPlayerMods
は、プレイヤーがワールドに入った直後に適用することを意味するらしい。- 何らかのトリガーによって動的に適用する場合にはこれを無効にしておく
- という設計のつもりらしいのだが、現在(2018/1 0.12.0p3)の実装では動的に適用することは出来なかった
- action 定義で SendRPC で AddPlayerMods custom method が追加できるのだが、動かしてみると例外が発生する。
- VRC_PlayerMods を持つオブジェクトを SetGameObjectActive してみたり、SpawnObject してみたりとあがいてみたが上手くいかなかった。
- すでに自分はワールドに居るので適用されないということなのだろうか、と、リスポーンしてみたが駄目。