請選擇您的所在地

Australia
Österreich
België
Canada
Canada - Français
中国
Česká republika
Denmark
Deutschland
France
HongKong
Iceland
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

如何在同一場景內切換不同的追蹤姿勢設定?

如果您以不同的追蹤姿勢設定建立 2 個或以上的頭部 (head),當您在啟用一個 head 卻未停用另一個 head 的情況下切換時,head 會使用錯誤的姿勢資料。

請依照下列步驟以避免此問題。

以下列出在同一場景中找出 head 的兩個方法。這些是利用追蹤起點 (TrackingUniverseSeatedTrackingUniverseStanding) 的樣式來切換兩個 head。使用公共標記 (ChooseDoFHowToFindHead) 來選取您想使用的尋找方法。

公用類別 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 底下,執行下列任一操作:
    • 追蹤空間中,選取追蹤通用坐姿,以啟用Body1 Head
    • 追蹤空間中,選取追蹤通用站姿,以啟用Body2 Head
送出
謝謝您!