环境
Unity 2020.3.8f1
steamvr
流程
原先代码为
void Start()
{
#if OPENVR_XR_API && UNITY_LEGACY_INPUT_HELPERS
if (this.gameObject.GetComponent<UnityEngine.SpatialTracking.TrackedPoseDriver>() == null)
{
this.gameObject.AddComponent<UnityEngine.SpatialTracking.TrackedPoseDriver>();
}
#endif
}
这种情况下,Camera会挂一个TrackedPoseDriver,TrackedPose会直接赋值给camera的transform
如果我们想获取实时的TrackedPose
代码为
Pose resultPose;
private void Update()
{
UnityEngine.SpatialTracking.TrackedPoseDriver.TrackedPose poseSource = UnityEngine.SpatialTracking.TrackedPoseDriver.TrackedPose.Head;
UnityEngine.SpatialTracking.PoseDataSource.GetDataFromSource(poseSource, out resultPose);
Debug.Log(resultPose.position.x + "," + resultPose.position.y + ","+resultPose.position.z);
Debug.Log(resultPose.rotation.x + "," + resultPose.rotation.y + "," + resultPose.rotation.z);
}
这样的话,可以删掉Start()里的代码并手动赋值(用于Redirected walking)