地域を選んでください
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

同じシーンで追跡ポーズ設定が異なるヘッドを切り替えるにはどうすればよいですか?

追跡ポーズ設定が異なるヘッドを2つ以上作成した場合、1つのヘッドをアクティブにして他のヘッドを非アクティブにすることなくヘッドを切り替えると、ヘッドは誤ったポーズデータを使用します。

この問題を回避するには、以下の手順に従ってください。

同じシーンにあるヘッドを見つける方法には、以下の2つの方法があります。これらの方法では、トラッキング元のスタイルである TrackingUniverseSeatedTrackingUniverseStanding を利用して2つのヘッドを切り替えます。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. 実行前のヘッドはすべて、非アクティブになっています。
  2. GameObject 内で、以下のいずれかを実行します。
    • 追跡スペースで、Tracking Universe Seated を選択し、Body1 Head をアクティブにします。
    • 追跡スペースで、Tracking Universe Standing を選択して、Body2 Head をアクティブにします。
送信
ありがとうございました!フィードバックをいただければ、お役立ち情報の提供を改善してまいります。