Player API
Udonを使用すると、ワールドインスタンス内のプレイヤーに関する情報を取得できます。
UdonはVRCPlayerApiを通じてプレイヤーとやり取りします。各プレイヤーはVRCPlayerApiオブジェクトを持っており、プレイヤーの参加や退出時には、それらを監視しているUdonBehaviour上でOnPlayerJoined / OnPlayerLeftイベントが発生します。
このページでは、一般的なプレイヤーのプロパティやメソッドの使用方法に関する情報を紹介します。VRCPlayerApiオブジェクトで実行できることは非常に多いため、一部の情報を以下のページにまとめています。
- Getting Players
- Player Positions
- Player Forces
- Player Collisions
- Player Audio
- Player Avatar Scaling
- Player Events
一般的に有用なプロパティとメソッド
IsValid
VRCPlayerApi, Boolean
Playerに対して何かを取得または設定しようとする前に、IsValidがtrueを返すかどうかを確認してください。参照を保存した後にプレイヤーが退出している場合、これはFalseを返します。グラフ上でより簡単に使用するには、あらゆるObjectに対して機能する汎用的な「IsValid」メソッドを検索してください。これを使用すると、TrueとFalseでフローを分けることができます。
- Udon Graph
UdonSharp

public override void OnPlayerLeft(VRCPlayerApi player)
{
if (Utilities.IsValid(player))
{
// Player is valid
}
else
{
// Player is not valid
}
}
EnablePickups
VRCPlayerApi, Boolean
ワールド内のVRCPickupオブジェクトを拾ったり使用したりするプレイヤーの機能をオフにします。このプロパティはデフォルトで有効なため、オフにしたい場合のみこのメソッドを使用してください。
get displayName
VRCPlayerApi
プレイヤーの表示名を取得します(VRChatへのログインに使用され、公開されないUsernameとは異なる場合があります)。
Get isLocal
in: VRCPlayerApi
out: Boolean
対象のプレイヤーがローカルプレイヤーであるかどうかを判別します。
Get isMaster
in: VRCPlayerApi
out: Boolean
指定したPlayerがインスタンスマスターかどうかを返します。
isInstanceOwner を取得
in: VRCPlayerApi
out: Boolean
指定したプレイヤーが現在のインスタンスオーナーかどうかを返します。
isVRCPlus を取得
in: VRCPlayerApi
out: Boolean
指定したプレイヤーが有効なVRC+サブスクリプションを持っているかどうかを返します。
isSuspended を取得
in: VRCPlayerApi
out: Boolean
プレイヤーのデバイスがサスペンド(一時停止)状態かどうかを返します。デバイスがスリープモードに入ったり、別のアプリに切り替わったりするとサスペンド状態になります。サスペンド中は、プレイヤーがVRChatを再度開くまで、デバイスはUdonコードを実行せず、ネットワークイベントにも応答しません。
プラットフォームを問わず、いつでもデバイスがサスペンド状態になることを考慮してコードを作成してください。PC版のプレイヤーは現在サスペンド状態になることはありませんが、これを前提とした設計は避けてください。
ローカルプレイヤーの場合、isSuspended は常に false になることに注意してください。ローカルプレイヤーがサスペンドされている間はUdonを実行できないためです。
GetPickupInHand
in: VRCPlayerApi, Hand (none, left, right)
out: VRCPickup
指定した手にプレイヤーが持っているピックアップを取得します。ローカルプレイヤーに対してのみ機能します。VRCPickupが見つからない場合はnullを返します。
IsOwner
in: VRCPlayerApi, GameObject
out: Boolean
プレイヤーが指定されたGameObjectのオーナーであるかどうかを返します。同期において重要です。
IsUserInVR
in: VRCPlayerApi
out: Boolean
プレイヤーがVRヘッドセットを使用しているかどうかを返します。
PlayHapticEventInHand
VRCPlayerApi, Hand, float, float, float
プレイヤーがハプティックコントローラーを持っている場合、それを振動させます。floatの入力値は0から1の範囲である必要があります。duration(持続時間)は振動する時間、amplitude(振幅)は振動の強さ、frequency(周波数)は振動の速さです。振動の感覚はコントローラーによって大きく異なる場合があります。
UseAttachedStation
VRCPlayerApi
このUdonBehaviourと同じGameObject上にあるステーションにプレイヤーを座らせます。
SimulationTime
float
プレイヤーのシミュレーション時間です。
UseLegacyLocomotion
VRCPlayerApi
NOT RECOMMENDED - このプレイヤーに対してレガシーな移動方式を有効にします。これは、VRChatの非推奨となったSDK2におけるプレイヤーの移動を模倣するものです。レガシー移動を有効にすると、ユーザーがワールドから退出するまで有効なままとなります。
Language
GetCurrentLanguage
string
ローカルユーザーが選択している言語を取得します。値はRFC 5646形式でフォーマットされます。(en、ja、es、zh-CNなど)
GetAvailableLanguages
string[]
VRChatの設定でプレイヤーが選択可能なすべての言語を取得します。値はRFC 5646形式でフォーマットされます。(en、ja、es、zh-CNなど)
最終更新: