プレイヤーアバターのスケール調整
Udonでは、ワールド作成者が以下の機能を利用するための関数を提供しています。
- アバターのスケール調整機能およびパラメーターの許可または強制。
- プレイヤーの身長変化への対応。
「OnAvatarChanged」や「OnAvatarEyeHeightChanged」など、これらの関数と併せて使用する関連イベントについては、アバターイベントを参照してください。
アバターのサイズを変更しても、環境との当たり判定には影響しないことに注意してください。これは、Unityでスケールを大きくしたアバターをアップロードした場合と同様です。
アバターのスケール調整には2つのモードがあり、プレイヤーごとに個別に調整可能です:
- プレイヤー操作によるモード。プレイヤーはアクションメニューのラジアルパペットや、クイックメニューの「Match Eye Height(目の高さを合わせる)」ボタンを使用して、自分の身長を調整できます。
- ワールド管理モード。このモードでは上記のプレイヤー操作機能は無効になり、プレイヤーの身長はワールド内で実行されるUdonプログラムによってのみ設定可能です。
いずれの場合も、アバターの変更や目の高さの変化が発生すると「OnAvatarChanged」および「OnAvatarEyeHeightChanged」イベントが発行されるため、Udonプログラムでこれらの発生に対応できます。
現在、アバターのスケール調整はデフォルトでプレイヤー操作モードになっています。ワールド側で管理するモードにするには、ウェブサイトまたは以下のUdon関数を使用して無効化する必要があります。
## プレイヤー操作によるスケール調整をウェブサイトから無効化する
ワールド内のアバターのスケール調整システムを単純に無効化したい場合は、VRChatウェブサイトの「My Worlds」セクションにログインし、対象のワールドを選択してトグルをオフにし、変更を保存してください。
![]()
ウェブサイト経由でアバターのスケール調整を無効化すると、ワールド内の全プレイヤーに対してシステムが完全に無効になります。プレイヤーはデフォルトのスケールでのみワールドを利用できるようになり、アバターのスケール調整用のメニューコンポーネントは無効化されます。
そのため、ウェブサイト上でアバターのスケール調整が無効に設定されている場合、以下の VRCPlayerApi 関数は Udon から利用できず、使用しても効果はありません: SetManualAvatarScalingAllowed、SetAvatarEyeHeightMinimumByMeters、SetAvatarEyeHeightMaximumByMeters、SetAvatarEyeHeightByMeters、SetAvatarEyeHeightByMultiplier。
これらの Udon 関数へのアクセス権を保持しつつ、ユーザーがアクションメニューのラジアルパペットから自身のスケールを調整できないようにしたい場合は、ウェブサイト上でアバターのスケール調整を有効にしたまま、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: 対象プレイヤーのアバターのプレハブスケールにおける目の高さに対する倍率として、目の高さを設定します。
最終更新: