玩家位置
玩家的位置、旋转和速度可以通过 Udon 访问和更改。以下所有节点都需要 VRCPlayerAPI 作为输入。
有关处理玩家力的节点,请参见玩家力。
GetPosition
获取玩家的位置。
输出
Vector3:玩家在世界空间中的位置。
GetRotation
获取玩家的旋转。
输入
输出
Quaternion:玩家在世界空间中的旋转。
GetBonePosition
获取玩家化身中指定骨骼的位置,如果骨骼不存在则返回 Vector3.Zero(0,0,0)。请注意,化身可能不会在您期望的位置拥有所有相同的骨骼,因此基于骨骼位置对玩家身高、姿势等属性进行假设时要小心。
Input
HumanBodyBones:要检查的骨骼。
Output
Vector3:骨骼在世界空间中的位置。
GetBoneRotation
获取玩家化身中指定骨骼的旋转,如果骨骼不存在则返回 Quaternion.Identity(0,0,0,1)。请注意,化身可能不会在您期望的位置拥有所有相同的骨骼,因此基于骨骼旋转对玩家身高、姿势等属性进行假设时要小心。
输出
Quaternion:世界空间中的骨骼旋转。
GetTrackingData
获取名为 TrackingData 的结构体,其中包含独立的位置和旋转数据。这是获取玩家头部和手部位置及旋转数据的推荐方式。对于本地玩家,此方法返回来自 TrackingManager 的数据(即来自其头戴设备/追踪器的数据);对于远程玩家,返回来自 RightHand、LeftHand 和 Head 骨骼的数据。Origin 返回本地 VR 用户游戏空间的中心,而对于本地桌面用户和所有远程用户则返回玩家的位置。AvatarRoot 返回化身根变换的数据(与玩家胶囊体附加到的变换相同)。对于全身追踪的用户,AvatarRoot 不会随头部朝向旋转。如果你需要反映玩家大致朝向的数据,请考虑使用 GetRotation。
输入
TrackingDataType:要检查的追踪数据类型。
输出
TrackingData:指定类型的玩家追踪数据。
GetVelocity
获取玩家移动的速度和方向。
输出
Vector3 velocity:玩家在世界空间中的速度。
SetVelocity
设置玩家移动的速度和方向。如果在本地玩家上调用 SetVelocity,其"IsGrounded"属性将设置为 false,因为在此期间他们无法直接控制自己的移动。
输入
Vector3:玩家在世界空间中的速度。
IsPlayerGrounded
获取玩家是否接触地面,这用于启用跳跃。
输出
bool IsPlayerGrounded:玩家是否在地面上。
TeleportTo
将本地玩家发送到新位置和指定旋转,除非 Station 不允许。
- Udon 只能传送本地玩家。使用网络让其他玩家自行传送。
- Station 可以阻止 Udon 传送玩家。
- 当你非常频繁或短距离传送时,考虑将
lerpOnRemote设置为false。
不要在网络更新期间传送玩家(例如 OnDeserialization)。否则,他们的化身可能会在传送过程中意外与几何体碰撞。请改用 SendCustomEventDelayedFrames 并将传送延迟一帧。
Inputs
Vector3 teleportPos: The target position in world space.Quaternion teleportRot: The target rotation in world space.SceneDescriptorSpawnOrientation TeleportOrientation(optional): How to align players with the destination position and rotation.bool lerpOnRemote(optional): Whether the interpolate the player's movement for remote players.- (Default) If
false, the teleportation looks instant to remote players. The network bandwidth cost increases. - If
true,the teleportation is treated like normal player movement, and movement looks smooth to remote players.
- (Default) If