物件操作工具 — MRTK2
ObjectManipulator是操作行為的新元件,先前位於ManipulationHandler中。 物件操作工具會進行一些改善和簡化。 此元件是操作處理常式的取代專案,即將淘汰。
ObjectManipulator腳本會使用一或兩手讓物件可移動、可調整且可旋轉。 物件操作工具可以設定為控制物件如何回應各種輸入。 腳本應該使用大部分的互動形式,例如HoloLens 2清楚的手部、HoloLens 2手部光線、HoloLens 1 注視和手勢,以及沉浸式頭戴式裝置動作控制器輸入。
如何使用物件操作工具
若要使用物件操作工具,請先將 ObjectManipulator
腳本元件新增至 GameObject。 請務必同時將碰撞器新增至 物件,使其可抓取界限相符。
若要讓物件回應近乎清楚的手部輸入,請同時新增 NearInteractionGrabbable
腳本。
藉由將固定的主體元件新增至 物件,即可為物件操作工具啟用物理行為。 新增此元件所啟用的物理行為會在 物理和碰撞中更詳細地討論。
此外,操作也可以透過將 操作條件約束元件 新增至 物件來限制。 這些是處理操作的特殊元件,並以某種方式變更操作行為。
偵測器屬性和欄位
一般屬性
主機轉換
將操作的物件轉換。 預設為元件的 物件。
操作類型
指定是否可以使用一手或兩手操作物件。 因為這個屬性是旗標,所以可以選取這兩個選項。
- 單手操作:選取時啟用單手操作。
- 雙手:選取時啟用兩個手部操作。
允許遠距操作
指定操作是否可以使用與指標的遠距互動來完成。
單手操作屬性
接近單手旋轉模式
指定物件在一手附近抓取物件時的行為方式。 這些選項僅適用于已表達的手部。
- 繞物件中心旋轉:物件會使用手部旋轉來旋轉,但與物件中心點有關。 物件在旋轉時似乎移動較少,但手部與物件之間可能會有中斷連線感。 更適合用於遠距互動。
- 旋轉擷取點:旋轉物件與指指之間關於抓取點的手部。 它應該會覺得物件是由手部所持有。
單手旋轉模式遠
指定物件在距離上以一手抓取物件時的行為方式。 這些選項僅適用于已表達的手部。
- 旋轉物件中心:使用手部旋轉來旋轉物件,但與物件中心點有關。 適合用於在物件旋轉時不移動物件中心的距離檢查。
- 繞抓取點旋轉:使用手部旋轉來旋轉物件,但關於指標光線點擊點。 適用于檢查。
雙手操作屬性
雙手操作類型
指定兩個手部操作如何轉換物件。 因為這個屬性是旗標,所以可以選取任意數目的選項。
- 移動:如果選取,則允許移動。
- 調整:如果選取,則允許調整。
- 旋轉:選取時允許旋轉。
條件約束
啟用條件約束
此設定會啟用連結 的條件約束管理員。 轉換變更將由註冊至所選 條件約束管理員的條件約束來處理。
條件約束管理員
下拉式清單允許選取任何附加 的條件約束管理員。 物件操作工具可確保隨時都會附加 條件約束管理員 。 請注意,相同類型的多個元件會顯示在 unity 中的相同名稱之下。 為了更容易區分相同物件上的多個條件約束管理員,可用的選項會顯示所選取條件約束管理員的設定提示, (手動或自動條件約束選取) 。
移至元件
條件約束管理員選取專案隨附 [移至元件 ] 按鈕。 此按鈕會導致偵測器捲動至選取的元件,以便進行設定。
物理特性
只有在 物件具有 RigidBody 元件時,才會顯示本節中的設定。
發行行為
指定操作物件應該在釋放時保留的實體屬性。 因為這個屬性是旗標,所以可以選取這兩個選項。
- 保持速度:當物件釋放時,如果選取此選項,則會保留其線性速度。
- 保持Angular速度:釋放物件時,如果選取此選項,則會維持其角度速度。
使用強制進行接近操作
執行接近操作時,是否使用物理力來移動物件。 將此設定為 false 會讓物件感覺更直接連接到使用者手。 將這個設定為 true 會接受物件的品質和慣性,但可能會覺得物件是透過彈簧連接。 預設值為 false。
平滑處理
平滑遠
是否針對遠距互動啟用畫面播放速率獨立平滑。 預設會啟用遠平滑。
接近平滑
是否啟用畫面播放速率獨立平滑處理,以進行接近互動。 預設會停用接近平滑,因為效果可能會被視為與手部「中斷連線」。
平滑作用中
過時,未來版本將會移除。 應用程式應該使用 SmoothingFar、SmoothingNear 或兩者的組合。
移動 lerp 時間
要套用至移動的平滑量。 0 的平滑表示沒有平滑。 最大值表示值不會變更。
旋轉 lerp 時間
要套用至旋轉的平滑量。 0 的平滑表示沒有平滑。 最大值表示值不會變更。
Scale lerp time
要套用至縮放比例的平滑度。 0 的平滑表示不會平滑。 最大值表示值不會變更為值。
操作事件
操作處理常式提供下列事件:
- OnManipulationStarted:操作啟動時引發。
- OnManipulationEnded:操作結束時引發。
- OnHoverStarted:當手/控制器將可操作、接近或遠方時引發。
- OnHoverEnded:當手/控制器取消暫留操作、接近或遠處時引發。
操作的事件引發順序為:
OnHoverStarted - >OnManipulationStarted - >OnManipulationEnded - >OnHoverEnded
如果沒有操作,您仍會取得具有下列引發順序的暫留事件:
OnHoverStarted - >OnHoverEnded
物理和碰撞
將固定的實體元件新增至與物件操作工具相同的物件,即可啟用物理行為。 這不只會啟用上述 發行行為的 設定,也會啟用衝突。 若沒有固定的主體元件,衝突在操作期間不會正確運作:
- 在操作的物件與靜態碰撞器之間發生衝突 (亦即,具有碰撞器但沒有固定物件) 無法運作的物件,操作的物件會直接通過不受影響的靜態碰撞器。
- 操作物件與固定物件之間的衝突 (亦即具有碰撞器和固定物件的物件,) 導致固定物件有衝突回應,但回應是跳躍且非自然的。 操作物件上也沒有任何衝突回應。
新增固定的主體時,碰撞應該能正常運作。
沒有固定的主體
使用固定的主體
彈性 (實驗性)
透過物件操作工具操作物件時,可以使用彈性。 請注意, 彈性系統 仍處於實驗狀態。 若要啟用彈性,請連結現有的彈性管理員元件,或透過 Add Elastics Manager
按鈕建立並連結新的彈性管理員。