Player Avatar Scaling
Udonでは、ワールド作成者が以下の操作を行える関数を提供しています。
- アバターのスケーリング機能やパラメーターの許可、または強制。
- プレイヤーの身長変化への対応。
"OnAvatarChanged" や "OnAvatarEyeHeightChanged" など、これらの関数と組み合わせて使用する関連イベントについては、Avatar Events を参照してください。
アバターを別のサイズにスケーリングしても、環境とのコリジョンには影響しません。Unityで拡大縮小したアバターをアップロードした場合と同様に、コリジョンは変化しませんので注意してください。
Avatar Scalingには2つのモードがあり、プレイヤーごとに個別に調整可能です。
- プレイヤー操作モード:プレイヤーがアクションメニューのラジアルパペットやクイックメニューの「Match Eye Height(目の高さを合わせる)」ボタンを使用して、自身の身長を調整できるモードです。
- ワールド管理モード:これらの機能が無効化され、ワールド内で実行されているUdonプログラムによってのみプレイヤーの身長を設定できるモードです。
どちらのモードでも、アバターの変更や目の高さの変更が発生すると "OnAvatarChanged" および "OnAvatarEyeHeightChanged" イベントが発行されるため、Udonプログラムでこれらの発生に対応できます。
現在、Avatar Scalingはデフォルトでプレイヤー操作モードで動作しています。ワールド管理モードで運用したい場合は、ウェブサイト上または以下のUdon関数を使用して無効化する必要があります。
プレイヤー操作モードでは0.2mから5mの間で調整できますが、Udonを使用すると0.01mから10000mの値を設定できます。ただし、0.1mから100mの範囲外はVRChatで公式にサポートされておらず、UIの崩れや不安定な動作などの悪影響を及ぼす可能性がある点に注意してください。
ウェブサイト経由でプレイヤーによるスケーリングを無効にする
ワールドのアバター・スケーリング・システムを単純に無効にしたい場合は、VRChatウェブサイトの「My Worlds」セクションにログインし、対象のワールドを選択してスイッチをオフにし、変更を保存してください。
![]()
ウェブサイト経由でアバター・スケーリングを無効にすると、そのワールド内の全プレイヤーに対してシステムが完全に無効化されます。プレイヤーはデフォルトのスケールでしかワールドを利用できなくなり、アバター・スケーリング用のメニューコンポーネントも無効になります。
このため、ウェブサイト経由でアバター・スケーリングを無効にしている間は、以下の VRCPlayerApi 関数をUdonから利用できなくなり、使用しても効果はありません:SetManualAvatarScalingAllowed、SetAvatarEyeHeightMinimumByMeters、SetAvatarEyeHeightMaximumByMeters、SetAvatarEyeHeightByMeters、SetAvatarEyeHeightByMultiplier。
これらのUdon関数へのアクセス権を保持しつつ、ユーザーがAction Menuのラジアルパペットから自らスケールを変更できないようにしたい場合は、ウェブサイト側でアバター・スケーリングを有効にしたまま、代わりにUdonを使用して SetManualAvatarScalingAllowed からプレイヤー操作によるアバター・スケーリングモードを無効にしてください。
プレイヤー操作によるスケーリング用関数
特に記載がない限り、以下の関数はすべてローカルプレイヤーに影響を与えるUdonプログラムでのみ使用可能であり、他のプレイヤーに属する VRCPlayerApi オブジェクトに対して呼び出しても成功しません。
GetManualAvatarScalingAllowed
ローカルプレイヤーが自身のアバターのスケールを操作できるかどうかを確認します。
Output
bool: ローカルプレイヤーがプレイヤー操作によるアバターのスケーリングモードである場合はtrue、ワールド権限によるスケーリングモードである場合はfalseを返します。
SetManualAvatarScalingAllowed
プレイヤー操作によるスケーリングモードと、ワールド権限によるスケーリングモードを切り替えます。
Input
bool:trueを指定するとプレイヤー操作モードになり、falseを指定するとワールド権限モードになります。
GetAvatarEyeHeightMinimumAsMeters
プレイヤー操作によるアバターのスケーリングモードにおいて、ローカルプレイヤーが自身を設定できる最小の目の高さをメートル単位で返します。(0.2メートル以上である必要があります。)
Output
float: 最小の目の高さ(メートル単位)。
SetAvatarEyeHeightMinimumByMeters
プレイヤー操作によるアバターのスケーリングモードにおいて、ローカルプレイヤーが自身を設定できる最小の高さをメートル単位で設定します。(0.2メートル以上である必要があります。)
Input
float: アバターの最小の目の高さをメートル単位で設定します。
GetAvatarEyeHeightMaximumAsMeters
プレイヤー操作によるアバターのスケーリングモードにおいて、ローカルプレイヤーが自身を設定できる最大の目の高さを返します。(5メートル以下である必要があります。)
Output
float: 最大のアバターの目の高さ(メートル単位)。
SetAvatarEyeHeightMaximumByMeters
プレイヤー操作によるアバターのスケーリングモードにおいて、ローカルプレイヤーが自身を設定できる最大の目の高さをメートル単位で設定します。(5メートル以下である必要があります。)
Input
float: 最大の目の高さをメートル単位で設定します。
ワールド権限のスケーリングに関する関数
特に記載がない限り、以下の関数はすべてローカルプレイヤーに影響を与えるUdonプログラムでのみ使用可能であり、他のプレイヤーに属する VRCPlayerApi オブジェクトに対して呼び出しても成功しません。
GetAvatarEyeHeightAsMeters
対象プレイヤーのアバターに設定された目の高さを返します。この関数はローカルプレイヤーおよびリモートプレイヤーの両方で機能します。
Output
float: 対象プレイヤーのアバターに設定された目の高さ。
SetAvatarEyeHeightByMeters
Input
float: 現在のプレイヤーアバターの目の高さをメートル単位で設定します。
SetAvatarEyeHeightByMultiplier
Input
float: 目の高さを、プレハブのスケールにおける対象プレイヤーのアバターの目の高さに対する倍率として設定します。
最終更新: