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

プレイヤーの座標

プレイヤーの座標、回転、および速度は、Udonを使用して取得や変更が可能です。以下のすべてのノードには、入力として VRCPlayerAPI が必要です。

プレイヤーに関連する力(Force)を扱うノードについては、Player Forces を参照してください。

GetPosition

プレイヤーの座標を取得します。

Output

  • Vector3: ワールド空間におけるプレイヤーの座標。

GetRotation

プレイヤーの回転を取得します。

Input

Output

  • Quaternion: ワールド空間におけるプレイヤーの回転。

GetBonePosition

プレイヤーのアバターの指定されたボーンの座標を取得します。ボーンが存在しない場合は Vector3.Zero (0,0,0) を返します。アバターによって、想定した場所に同じボーンが存在するとは限らないため、ボーンの座標に基づいてプレイヤーの身長やポーズといった属性を推測する際は注意してください。

Input

  • HumanBodyBones: 確認するボーン。

Output

  • Vector3: ワールド空間におけるボーンの座標。

GetBoneRotation

プレイヤーのアバター内の指定されたボーンの回転を取得します。ボーンが存在しない場合は Quaternion.Identity (0,0,0,1) を返します。アバターによって、想定した場所に同じボーンが存在しない可能性があるため、ボーンの回転に基づいてプレイヤーの身長やポーズといった属性を推測する際は注意してください。

Output

  • Quaternion: ワールド空間におけるボーンの回転。

GetTrackingData

PositionRotationの個別データを含むTrackingData構造体を取得します。これは、プレイヤーの頭部や手の位置と回転のデータを取得する際に推奨される方法です。この関数は、ローカルプレイヤーについてはTrackingManagerからのデータ(ヘッドセットやトラッカーから送られてくるデータ)を返し、リモートプレイヤーについてはRightHand(右手)、LeftHand(左手)、Head(頭部)の各ボーンからのデータを返します。Originは、ローカルのVRユーザーの場合はプレイエリアの中心を返し、ローカルのデスクトップユーザーおよびすべてのリモートユーザーの場合はプレイヤーの位置を返します。AvatarRootは、アバターのルートトランスフォーム(プレイヤーのカプセルがアタッチされているものと同じトランスフォーム)のデータを返します。フルトラッキング中のユーザーの場合、AvatarRootは頭部の向きに合わせて回転しません。プレイヤーの一般的な正面方向を反映したデータが必要な場合は、GetRotationの使用を検討してください。

Input

  • TrackingDataType: 取得するトラッキングデータの種類。

Output

  • TrackingData: 指定した種類のプレイヤーのトラッキングデータ。

GetVelocity

プレイヤーの移動速度と方向を取得します。

Output

  • Vector3 velocity: ワールド空間におけるプレイヤーの速度。

SetVelocity

プレイヤーの移動速度と方向を設定します。ローカルプレイヤーに対して SetVelocity が呼び出されると、その間はプレイヤーが直接操作を行っている状態ではないため、IsGrounded プロパティが false に設定されます。

Input

  • Vector3: ワールド空間におけるプレイヤーの速度。

IsPlayerGrounded

プレイヤーが地面に接地しているかどうかを取得します。これが true の場合、ジャンプが可能になります。

Output

  • bool IsPlayerGrounded: プレイヤーが接地しているかどうか。

TeleportTo

ローカルプレイヤーを指定した位置と回転に移動させます。ただし、ステーションが移動を許可していない場合は移動しません。

  • Udonでテレポートできるのはローカルプレイヤーのみです。他のプレイヤーをテレポートさせるには、ネットワーキングを使用してください。
  • ステーションの設定によっては、Udonによるプレイヤーのテレポートが制限される場合があります。
  • 非常に頻繁にテレポートを行う場合や、極めて短い距離を移動させる場合は、lerpOnRemotefalse に設定することを検討してください。
warning

ネットワーク更新(例: OnDeserialization)の最中にプレイヤーをテレポートさせないでください。さもないと、テレポート中にアバターが予期せず地形と衝突する可能性があります。代わりに SendCustomEventDelayedFrames を使用し、1フレーム遅らせてテレポートを実行してください。

Inputs

  • Vector3 teleportPos: ワールド空間におけるターゲット位置。
  • Quaternion teleportRot: ワールド空間におけるターゲット回転。
  • SceneDescriptorSpawnOrientation TeleportOrientation (任意): プレイヤーを目的地の位置と回転にどのように合わせるか。
  • bool lerpOnRemote (任意): リモートプレイヤーに対してプレイヤーの移動を補間するかどうか。
    • (デフォルト)false の場合、リモートプレイヤーから見てテレポートは瞬時に行われます。ネットワーク帯域幅のコストが増加します。
    • true の場合、テレポートは通常のプレイヤー移動として扱われ、リモートプレイヤーから見て移動が滑らかに見えます。

最終更新: