Table of Contents

Targetとoriginのためのactive-control戦略

以下の内容を通じて、targetとorigin下のオブジェクトのデフォルトの表示・非表示戦略と、必要に応じた調整方法を理解できます。

開始前に

  • Targetを読み、targetの基本概念、状態、ライフサイクルを理解してください。
  • XR Originを読み、XR Originの基本概念、構成要素、ライフサイクルを理解してください。

active-controlと戦略の種類

session実行中、targetとoriginは追跡やロストなどの状態変化を経験します。active-control戦略により、targetとorigin下のオブジェクトの表示・非表示動作を自動管理できます。

Unityでは、ActiveControllerコンポーネントがtargetとoriginオブジェクトのGameObject.activeSelf状態を自動管理し、targetが追跡された時やモーショントラッキングが追跡を開始した後にコンテンツを表示し、targetがロストした時やモーショントラッキングが正常に初期化される前にコンテンツを非表示にします。

ActiveControllerは2種類のactive-control戦略を提供します:

デフォルトでTargetControllerActiveWhileTracked戦略を使用します。これはtargetが追跡されるとtargetとその下のコンテンツがアクティブ化され、追跡ロスト時には非アクティブ化されることを意味します。

デフォルトでXROriginChildControllerActiveAfterFirstTracked戦略を使用します。これはモーショントラッキングが正常に初期化されるまでoriginとその下のコンテンツが非アクティブ状態となり、初期化成功後は持続的にアクティブ状態を維持することを意味します。

異なるactive-control戦略の選択

Inspectorパネルを開き、StrategyドロップダウンメニューからInputを選択

alt text

右側で必要なactive-control戦略を選択し、デフォルト戦略を上書きします。

alt text

スクリプトでは、OverrideStrategyプロパティでデフォルトのactive-control戦略を上書きできます。

例えば次のコードは、targetのactive-control戦略をActiveAfterFirstTrackedに設定する方法を示します:

target.ActiveController.OverrideStrategy = ActiveController.Strategy.ActiveAfterFirstTracked;

戦略変更は即時反映され、現在の追跡状態に基づいてGameObject.activeSelfが更新されます。

active-controlの無効化

完全にactive-controlを無効化する必要がある場合(例:手動制御が必要な場合)、ActiveControllerコンポーネントを無効化することでactive-controlをオフにできます。

alt text

スクリプトでは、ActiveController.enabledプロパティを設定してactive-controlを無効化できます。

target.ActiveController.enabled = false;

enabledプロパティの変更は即時反映され、追跡状態に基づくGameObject.activeSelfの更新が停止します。ActiveControllerコンポーネントを再度有効化すると、現在の追跡状態に基づいてGameObject.activeSelfが更新されます。