條件約束管理員 — MRTK2

條件約束管理員允許將一組條件約束元件套用至轉換。 附加至遊戲物件的型 TransformConstraint 別元件可以納入考慮。 根據預設,條件約束管理員會自動收集附加至遊戲物件的所有 條件約束元件 ,並將其套用至已處理的轉換。 不過,使用者可以選擇手動設定已套用的條件約束清單,並只允許套用附加條件約束的子集。

目前下列 MRTK UX 元素支援條件約束管理員:

偵測器屬性和欄位

條件約束管理員可以透過兩種模式運作:

  • 自動條件約束選取
  • 手動條件約束選取

自動條件約束選取

自動選取

條件約束管理員的預設模式自動條件約束選取會提供所有附加條件約束元件的清單,以及 移至按鈕新增條件約束按鈕

將條件約束新增至遊戲物件

此按鈕可讓條件約束元件直接從條件約束管理員偵測器新增。 專案中的所有條件約束類型都應該在這裡顯示。 如需詳細資訊 ,請參閱轉換條件約束

移至元件

在此列出物件上找到的所有條件約束,都有 [移至元件 ] 按鈕。 此按鈕會導致偵測器捲動至選取的條件約束元件,以便進行設定。

手動條件約束選取

手動選取

如果條件約束管理員設定為手動模式,則只會處理條件約束清單中連結的條件約束,並套用至轉換。 顯示的清單只會顯示使用者選取的條件約束,以及移至移除或新增專案的 按鈕 或選項。 第一次啟用手動模式時,條件約束管理員會填入清單,以作為選取附加條件約束元件的起點。

移除專案

這會從手動選取的清單中移除專案。 請注意,此選項不會從遊戲物件中移除條件約束元件。 條件約束元件一律必須手動移除,以確保不會意外中斷參考此元件的任何其他元件。

新增專案

[新增] 專案將會開啟下拉式清單,其中顯示尚未在手動清單中的所有可用條件約束元件。 按一下元件將加入手動條件約束選取的任何專案。

新增條件約束

此選項會將所選類型的元件新增至遊戲物件,並將新建立的條件約束元件新增至手動條件約束清單。

轉換條件約束

條件約束可用來以某種方式限制操作。 例如,某些應用程式可能需要旋轉,但也要求物件保持直立。 在此情況下, RotationAxisConstraint 可以將 新增至 物件,並用來將旋轉限制為 Y 軸旋轉。 MRTK 提供許多條件約束,如下所述。

您也可以定義新的條件約束,並使用它們來建立某些應用程式可能需要的唯一操作行為。 若要這樣做,請建立繼承自 TransformConstraint 的腳本,並實作抽象 ConstraintType 屬性和抽象 ApplyConstraint 方法。 將新的條件約束新增至 物件時,它應該以定義的方式限制操作。 這個新的條件約束也應該顯示在條件約束管理員 自動選取 中,或在手動模式中 新增專案 下拉式清單。

MRTK 提供的所有條件約束都會共用下列屬性:

手部類型

指定條件約束是用於一手、兩手或兩種操作。 因為這個屬性是旗標,所以可以選取這兩個選項。

  • 單手操作:如果選取,則會在單手操作期間使用條件約束。
  • 雙手:如果選取,則會在兩個手部操作期間使用條件約束。

近接類型

指定條件約束是用於接近、遠或這兩種操作。 因為這個屬性是旗標,所以可以選取這兩個選項。

  • Near:如果選取,則會在接近操作期間使用條件約束。
  • Far:如果選取,則會在遠距操作期間使用條件約束。

FaceUserConstraint

條件約束臉部使用者

當這個條件約束附加至物件時,旋轉將會受到限制,讓物件一律會面對使用者。 這適用于平板或面板。 FaceUserConstraint的屬性如下所示:

離開臉部

如果為 true,物件會與使用者相隔。

FixedDistanceConstraint

條件約束固定距離

此條件約束會修正操作開始時操作物件與另一個物件轉換之間的距離。 這適用于修正從操作物件到頭部轉換之間的距離等行為。 FixedDistanceConstraint的屬性如下所示:

條件約束轉換

這是操作物件將有固定距離的其他轉換。 預設為相機轉換。

FixedRotationToUserConstraint

固定旋轉

此條件約束修正了使用者與操作物件之間的相對旋轉。 這適用于平板或面板,因為它可確保操作的物件一律向使用者顯示相同的臉部,如同在操作開始時所做的一樣。 FixedRotationToUserConstraint沒有任何唯一的屬性。

FixedRotationToWorldConstraint

固定旋轉至世界

此條件約束修正操作物件時所操作物件的全域旋轉。 這在操作不應模擬任何旋轉的情況下,這非常有用。 FixedRotationToWorldConstraint沒有任何唯一的屬性:

MaintainApparentSizeConstraint

維護明顯大小

當這個條件約束附加至物件時,無論物件與使用者有多遠,它都會維持與使用者相同的明顯大小 (亦即,它會佔用使用者檢視) 的相同比例。 這可用來確保 Slate 或文字面板在操作時保持可讀取狀態。 MaintainApparentSizeConstraint沒有任何唯一的屬性:

MoveAxisConstraint

條件約束移動軸

此條件約束可用來修正操作物件可以移動的座標軸。 這適用于在平面表面或沿著線條操作物件。 MoveAxisConstraint的屬性如下所示:

移動的條件約束

指定要防止移動的軸。 根據預設,這些軸會是全域軸,而不是本機軸,但可以變更如下。 因為這個屬性是旗標,所以可以選取任意數目的選項。

  • X 軸:如果選取,沿著 X 軸移動會受到限制。
  • Y 軸:如果選取,沿著 Y 軸移動會受到限制。
  • Z 軸:如果選取,沿著 Z 軸移動會受到限制。

針對條件約束使用本機空間

如果為 true,則會限制操作物件的本機轉換座標軸相對。 預設為 False。

RotationAxisConstraint

條件約束旋轉軸

此條件約束可用來修正可旋轉操作物件的座標軸。 這很適合用來讓操作的物件保持直立,但仍允許 Y 軸旋轉,例如。 RotationAxisConstraint的屬性如下所示:

輪替的條件約束

指定要防止旋轉的軸。 根據預設,這些軸會是全域軸,而不是本機軸,但可以變更如下。 因為這個屬性是旗標,所以可以選取任意數目的選項。

  • Y 軸:選取時,Y 軸的旋轉會受到限制。
  • Z 軸:選取時,Z 軸的旋轉會受到限制。
  • X 軸:如果選取,則會限制有關 X 軸的旋轉。

針對條件約束使用本機空間

如果為 true,則會限制操作物件的本機轉換座標軸相對。 預設為 False。

MinMaxScaleConstraint

最小最大值 Constatint

此條件約束允許針對操作物件的小數位數設定最小值和最大值。 這適用于防止使用者調整物件太小或太大。 MinMaxScaleConstraint的屬性如下所示:

小數位數下限

操作期間的最小小數位數值。

縮放上限

操作期間的最大縮放值。

相對於初始狀態

如果為 true,則會將上述值解譯為相對於物件的初始小數位數。 否則,它們會解譯為絕對刻度值。