VRChat 非公式日本語ドキュメント

プレイヤーアバターのスケール調整

Udonでは、ワールド作成者が以下の機能を利用するための関数を提供しています。

  • アバターのスケール調整機能およびパラメーターの許可または強制。
  • プレイヤーの身長変化への対応。

「OnAvatarChanged」や「OnAvatarEyeHeightChanged」など、これらの関数と併せて使用する関連イベントについては、アバターイベントを参照してください。

スケール調整と当たり判定

アバターのサイズを変更しても、環境との当たり判定には影響しないことに注意してください。これは、Unityでスケールを大きくしたアバターをアップロードした場合と同様です。

アバターのスケール調整には2つのモードがあり、プレイヤーごとに個別に調整可能です:

  1. プレイヤー操作によるモード。プレイヤーはアクションメニューのラジアルパペットや、クイックメニューの「Match Eye Height(目の高さを合わせる)」ボタンを使用して、自分の身長を調整できます。
  2. ワールド管理モード。このモードでは上記のプレイヤー操作機能は無効になり、プレイヤーの身長はワールド内で実行されるUdonプログラムによってのみ設定可能です。

いずれの場合も、アバターの変更や目の高さの変化が発生すると「OnAvatarChanged」および「OnAvatarEyeHeightChanged」イベントが発行されるため、Udonプログラムでこれらの発生に対応できます。

デフォルトではプレイヤー操作が可能

現在、アバターのスケール調整はデフォルトでプレイヤー操作モードになっています。ワールド側で管理するモードにするには、ウェブサイトまたは以下のUdon関数を使用して無効化する必要があります。

## プレイヤー操作によるスケール調整をウェブサイトから無効化する

ワールド内のアバターのスケール調整システムを単純に無効化したい場合は、VRChatウェブサイトの「My Worlds」セクションにログインし、対象のワールドを選択してトグルをオフにし、変更を保存してください。

とても簡単です!

ウェブサイト経由でアバターのスケール調整を無効化すると、ワールド内の全プレイヤーに対してシステムが完全に無効になります。プレイヤーはデフォルトのスケールでのみワールドを利用できるようになり、アバターのスケール調整用のメニューコンポーネントは無効化されます。

そのため、ウェブサイト上でアバターのスケール調整が無効に設定されている場合、以下の VRCPlayerApi 関数は Udon から利用できず、使用しても効果はありません: SetManualAvatarScalingAllowedSetAvatarEyeHeightMinimumByMetersSetAvatarEyeHeightMaximumByMetersSetAvatarEyeHeightByMetersSetAvatarEyeHeightByMultiplier

これらの 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: 対象プレイヤーのアバターのプレハブスケールにおける目の高さに対する倍率として、目の高さを設定します。

最終更新: