プレイヤーの座標
プレイヤーの座標、回転、および速度は、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
PositionとRotationの個別データを含む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によるプレイヤーのテレポートが制限される場合があります。
- 非常に頻繁にテレポートを行う場合や、極めて短い距離を移動させる場合は、
lerpOnRemoteをfalseに設定することを検討してください。
ネットワーク更新(例: OnDeserialization)の最中にプレイヤーをテレポートさせないでください。さもないと、テレポート中にアバターが予期せず地形と衝突する可能性があります。代わりに SendCustomEventDelayedFrames を使用し、1フレーム遅らせてテレポートを実行してください。
Inputs
Vector3 teleportPos: ワールド空間におけるターゲット位置。Quaternion teleportRot: ワールド空間におけるターゲット回転。SceneDescriptorSpawnOrientation TeleportOrientation(任意): プレイヤーを目的地の位置と回転にどのように合わせるか。bool lerpOnRemote(任意): リモートプレイヤーに対してプレイヤーの移動を補間するかどうか。- (デフォルト)
falseの場合、リモートプレイヤーから見てテレポートは瞬時に行われます。ネットワーク帯域幅のコストが増加します。 trueの場合、テレポートは通常のプレイヤー移動として扱われ、リモートプレイヤーから見て移動が滑らかに見えます。
- (デフォルト)
最終更新: