使用 Interactables 擷取、按住和擲回
概觀
Mesh Interactionables 是一種使用 Unity 腳本設定物件的系統,可在運行時間定義與物件或虛擬人偶行為的互動。 腳本會定義物件的屬性,這些屬性可以使用 XRI 互動項目來互動。 Mesh 工具組包含可定義之不同物件類型的腳本。 當項目執行時,它會設定物件所需的所有必要的預製項目和設定,或虛擬人偶的行為如所定義。 如果您想要查看互動物件在 Mesh 應用程式中執行的大致預覽,請務必 使用 Mesh 模擬來設定播放模式。 請注意,Mesh 應用程式中看到的 IK 功能不適用於使用網格仿真的播放模式。
Mesh 可互動安裝元件
若要讓物件可互動,您必須新增 Mesh Interactable Setup 元件。
在 [ 階層] 中,選取 物件。
在偵測器中,按兩下 [新增元件] 按鈕,然後選取 [Mesh Interactable Setup]。
元件會新增為預設 的 Interactable Type 屬性設定為 Basic。 (下一節將說明物件類型。
所有行為相同的物件群組屬性,都可以使用父 Mesh Interactable Setup 元件進行設定。 屬性將會套用至運行時間具有固定主體的所有子系,方法是將Mesh Interactable Body 元件自動新增至每個子物件。 您可以手動新增 Mesh Interactionable Body ,以使用 Mesh 與 Visual Scripting 互動,例如與互動事件,或透過可視化腳本修改可操作的目標轉換。
注意:
網格可互動主體 可讓每個可互動者獨立運作。
如果您想要啟用物理功能,則必須將殭化的人加入物件中。
取得說明
在 Mesh 互動設定 和 Mesh 可互動本文 元件中,您可以按下 [? ] 按鈕,流覽至 Mesh 檔中的頁面,其中包含按鈕所連線功能的說明。
可互動的物件類型
物件類型有四種:
- 基本
- 可管理
- 可裝備
- 可擲回
若要選擇物件類型:
- 在 Mesh Interactable Setup 元件中,按兩下 [互動類型 ] 下拉式清單,然後選取四個選項之一。
基本
如上所述,這是默認類型。 當使用者將滑鼠停留在物件上方或選取物件時,它可以叫用回呼,而其他腳本可以做出反應。 例如,如果您有想要用來啟用另一個物件的按鈕,請將這個 Interactable 類型新增至具有 OnSelected 回呼的按鈕,以啟用該其他物件。 只要新增此類型與碰撞器,按鈕即可完全互動;你不必做任何其他事。
注意:其他三種互動類型--Manipulable、Equippable 和 Throwable(如下所述),具有與基本類型相同的屬性,但具有其他功能。
可管理
您可以從距離移動此類型的物件;具體而言,您會在運行時間操作其轉換,並透過互動器光線結尾的空間移動它。 快捷鍵控件可用來旋轉或轉譯物件。 若要操作 Mesh 應用程式中的物件,您可以開啟虛擬人偶手的 IK 設定,以追蹤物件。 可操縱的物件不需要固定物件,但如果您想要讓物件具有物理功能,您應該新增一個物件。
可裝備
您可以擷取此類型的物件。 在 Mesh 方面,我們說你「裝備」物件到你的虛擬人偶的手。 若要在計算機上裝備物件,請按下物件,或在選取物件時按 F 。 若要在 Quest 上裝備物件,請在選取物件時按下 [控制] 按鈕。 可配備的物件包含 IK 目標的設定,以設定虛擬人偶的手臂姿勢,同時裝備物件。 IK 目標是虛擬人偶胸部的位移:這會決定物件保留或啟動時手部的所在位置。
可擲回
顧名思義,您可以擷取並擲回此類型的物件。 擷取之後,您可以 按滑鼠左鍵並按住目標模式 。 這可讓虛擬人偶的手臂追蹤您的滑鼠目標;若要擲回 物件,請放開滑鼠左鍵。
讓物件與 Visual Scripting 互動
所有 Interactionables 元件都有可供 Visual Scripting 使用的互動屬性和方法,因此您有無限數量的方法來讓它們一起運作。 若要利用這項功能,請使用 腳本圖形內的Mesh Interactable Body 元件,並將節點與可用屬性,例如 OnHovered 或 OnSelected 連結至 OnStateChanged 節點。 例如,下列腳本圖形會在按下按鈕時啟用圓柱圖,並在放開按鈕時加以停用。 只要新增腳本和碰撞器,按鈕即可完全互動;你不必做任何其他事。
Visual Scripting 屬性
針對所有可互動的主體:
- IsHovered (只讀) - 您的本機虛擬人偶是否暫留物件。
- IsSelected (只讀) - 不論是否有任何虛擬人偶正在選取物件。 在 MeshBrowser 中執行時,將會建立網路。
- IsSelectedLocally – 本機虛擬人偶是否正在選取物件。
- IsMine (只讀) - 如果最後一個虛擬人偶選取或裝備物件,則為 True。
針對裝備:
- EquippedAt (只讀) - 此物件配備的位置 – None、DefaultHand、RightHand、LeftHand。 在 MeshBrowser 中執行時,將會建立網路。
- EquipTime (只讀) - 此物件裝備的時間。 在 MeshBrowser 中執行時,將會建立網路。
- IsActivated (只讀) - 如果此物件處於啟動狀態。 僅適用於無法擲回的物件。 在 MeshBrowser 中執行時,將會建立網路。
- IsAiming (唯讀) - 如果本機虛擬人偶在持有此物件時處於目標狀態。 僅適用於可擲回專案。
- IsThrowing (只讀) – 如果本機虛擬人偶正在主動擲回物件。 僅適用於可擲回專案。
- IsEquipped (只讀) (只讀) - 如果這個物件目前由虛擬人偶裝備。 在 MeshBrowser 中執行時,將會建立網路。
- IsThrowable – 如果這個物件是可擲回的。
- ThrowVelocity – 釋放物件時擲回物件的速度。
若要修改目標位置的可管理專案:
- 目標位置 (只讀):在 Mesh 互動屬性中使用預設強制模式時主體的目標位置
- 目標旋轉(只讀):在 Mesh 互動屬性中使用預設強制模式時,主體的目標旋轉
- 雷擊中位置(只讀):身體上互動者光線投射點擊的位置
- 光線點擊旋轉(只讀):互動者繞光線方向旋轉
- 修改的目標位置(讀取和寫入):用來設定可視化腳本的新目標位置。 這會覆寫預設的目標位置。 最佳做法是覆寫此屬性:
- 使用目標位置的狀態變更。 在此情況下,只有當互動器和新位置變更時,視覺腳本才會引發流程。
- 在晚期更新上使用 。 如果您需要在每個畫面中變更目標轉換,請在後續更新中執行此動作,以便在下一個畫面格中立即使用新的目標轉換。
- 修改的目標旋轉(讀取和寫入):用來設定可視化腳本的新目標旋轉。 這會覆寫預設的目標位置。