请选择您的所在地
Australia
Österreich
België
Canada
Canada - Français
中国
Česká republika
Denmark
Deutschland
France
HongKong
Iceland
Ireland
Italia
日本
Korea
Latvija
Lietuva
Lëtzebuerg
Malta
المملكة العربية السعودية (Arabic)
Nederland
New Zealand
Norge
Polska
Portugal
Russia
Saudi Arabia
Southeast Asia
España
Suisse
Suomi
Sverige
台灣
Ukraine
United Kingdom
United States
请选择您的所在地
België
Česká republika
Denmark
Iceland
Ireland
Italia
Latvija
Lietuva
Lëtzebuerg
Malta
Nederland
Norge
Polska
Portugal
España
Suisse
Suomi
Sverige

如何在同一场景内切换不同的姿势追踪设置?

如果您创建了两个或以上的头部(head)来保存不同的姿势追踪设置,在未激活一个 head 而又停用另一个 head 的情况下进行切换时,head 会使用错误的姿势数据。

请按照以下步骤操作,以避免出现此问题。

以下列出了在同一场景中查找 head 的两种方法。两种方法利用了追踪原点(TrackingUniverseSeatedTrackingUniverseStanding)在两个 head 之间切换。使用 ChooseDoF 的公共标记 HowToFindHead 选择要使用的查找方法。

public class ChooseDoF :MonoBehaviour { public ETrackingUniverseOrigin trackingSpace = ETrackingUniverseOrigin.TrackingUniverseSeated; public bool HowToFindHead = false; void OnEnable() { if (HowToFindHead) method1(); else method2(); } // For method 1, it makes use of the Transform function to find the head you would like to take. void method1() { #if UNITY_5_5_OR_NEWER // Global find GameObject body1 = transform.root.Find("‍Body1"‍).gameObject; GameObject body2 = transform.root.Find("‍Body2"‍).gameObject; #else // Children find GameObject body1 = transform.Find("‍Body1"‍).gameObject; GameObject body2 = transform.FindChild("‍Body2"‍).gameObject; #endif if (trackingSpace == ETrackingUniverseOrigin.TrackingUniverseSeated) body1.SetActive(true); else body2.SetActive(true); } // For method 2, it traverses the component list to find the head you would like to take. void method2() { // Children find var list = GetComponentsInChildren<WaveVR_Render>(true);

foreach (WaveVR_Render render in list) { var obj = render.transform.parent.gameObject; if (trackingSpace == ETrackingUniverseOrigin.TrackingUniverseSeated) { if (obj.name == "‍Body1"‍) { obj.SetActive(true); break; } } else { if (obj.name == "‍Body2"‍) { obj.SetActive(true); break; } } } } }
  1. 运行之前,所有的 head 都是未激活状态。
  2. GameObject下,执行下列操作之一:
    • Tracking Space 中,选择Tracking Universe Seated 以使 Body1 Head 处于激活状态。
    • Tracking Space 中,选择Tracking Universe Standing 以使 Body2 Head 处于激活状态。
提交
谢谢!您的反馈可以帮助其他人了解最有用的信息。