此示例演示了如何與世界空間中(zhōng)的 3D 對象和 2D UI 進行交互。
示例工(gōng)作(zuò)原理(lǐ)
該示例展示了如何與場景中(zhōng)的 UI 元素和其他(tā)遊戲對象進行交互。
浮動的 UI 面闆提供了常見的 UI 元素,例如按鈕和滾動條。按鈕可(kě)以通過凝視指針或設備指針進行操作(zuò),而示例中(zhōng)的滾動條隻能(néng)通過設備指針使用(yòng)。此外,場景中(zhōng)的另一個 UI 元素展示了主機控制器觸摸闆的輸入。
最後,一個可(kě)用(yòng)控制器抓取的互動立方體(tǐ)對象展示了 3D 對象交互。要使其成為(wèi)有(yǒu)效的交互對象,該立方體(tǐ)需要與 3DWidget 通道發生碰撞或重疊,并且需要實現 BPI_Interactable 接口(位置在 SnapdragonSpacesSamples Content > Snapdragon > Common > Placeable)。要為(wèi)對象添加接口,請在藍圖中(zhōng)選擇Class Settings > Interfaces > Implemented Interfaces > Add。
設備指針控制器
設備指針控制器的實現分(fēn)為(wèi)多(duō)個藍圖,以下章節将詳細描述這些藍圖。
指針控制器組件
BP_PointerControllerComponent 藍圖文(wén)件(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Common > Core > Components)可(kě)以添加到 pawn 類中(zhōng),實現與 2D UI 和 3D 對象的指針交互。
該組件繼承自父類 BP_ControllerComponent(參見場景設置),提供了管理(lǐ)與世界交互的基礎腳本。唯一可(kě)以自定義的選項是“運動控制器類”,指的是當激活該控制器時會生成的演員類。
指針控制器
BP_PointerController 藍圖文(wén)件(位于 SnapdragonSpacesSamples Content > SnapdragonSpaces > Common > Placeable)管理(lǐ)射線(xiàn)投射以及與小(xiǎo)部件和 3D 對象的交互,它使用(yòng)名(míng)為(wèi) 3DWidget 的自定義 Trace Channel。為(wèi)了可(kě)視化設備指針控制器,一個圓柱網格會從控制器的原點沿其前進方向渲染。默認情況下,圓柱網格為(wèi)紅色,但當它與有(yǒu)效的交互對象碰撞時,會變為(wèi)綠色。此外,圓柱網格的長(cháng)度會根據射線(xiàn)投射的碰撞點進行調整。