Table of Contents

target と origin に適用される active control 戦略

以下の内容では、target と origin 配下のオブジェクトのデフォルトの表示/非表示戦略、および必要に応じて調整する方法について説明します。

開始する前に

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

Active control と制御戦略の種類

session 実行中、target と origin は tracking や lost などの状態変化を経ます。active control 戦略により、target と origin 配下のオブジェクトの表示/非表示動作を自動的に管理できます。

Unity では、ActiveController コンポーネントが target と orign オブジェクトの GameObject.activeSelf 状態を自動管理します。これにより、target が tracking された後、または motion tracking が tracking を開始した後にコンテンツを表示し、target が lost したとき、または motion tracking が正常に初期化される前にコンテンツを非表示にします。

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

デフォルトでは、TargetControllerActiveWhileTracked 戦略を使用します。つまり、target が tracking されているとき、target とその配下のコンテンツは有効化され、tracking が lost したとき、target とそのコンテンツは無効化されます。

デフォルトでは、XROriginChildControllerActiveAfterFirstTracked 戦略を使用します。つまり、motion tracking が正常に初期化される前、origin とその配下のコンテンツは無効化され、motion tracking が正常に初期化されると、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;

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

Active control を無効化する

必要に応じて制御するなど、active control を完全に無効化したい場合は、ActiveController コンポーネントを無効化することで active control をオフにできます。

alt text

スクリプトでは、ActiveController.enabled プロパティを設定することで active control をオフにできます。

target.ActiveController.enabled = false;

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