命中(zhōng)測試示例
該示例演示了如何對現實世界中(zhōng)的點和面進行命中(zhōng)測試。有(yǒu)關通過射線(xiàn)投射進行命中(zhōng)測試的基本信息,以及 AR Foundation 的 AR Raycast Subsystem 組件的功能(néng),請參閱 Unity 文(wén)檔。要使用(yòng)此功能(néng),必須在 OpenXR 插件設置中(zhōng)啓用(yòng),路徑為(wèi) Project Settings > XR Plug-in Management > OpenXR (> Android Tab)。文(wén)檔中(zhōng)“射線(xiàn)投射”和“命中(zhōng)測試”這兩個術語可(kě)以互換使用(yòng)。
示例工(gōng)作(zuò)原理(lǐ)
将 AR Raycast Manager 添加到 AR Session Origin GameObject 将啓用(yòng)射線(xiàn)投射子系統。如果沒有(yǒu)可(kě)用(yòng)的平面管理(lǐ)器,命中(zhōng)測試功能(néng)将創建命中(zhōng)測試的基礎。如果以後添加了平面管理(lǐ)器,基礎平面檢測子系統将根據該管理(lǐ)器進行調整,命中(zhōng)追蹤可(kě)能(néng)會有(yǒu)所不同(例如,結果取決于平面管理(lǐ)器上設置的平面過濾器)。為(wèi)了獲得最佳結果,如果使用(yòng)命中(zhōng)測試,也請在平面管理(lǐ)器上啓用(yòng)所有(yǒu)過濾器。如果不使用(yòng)單獨的平面管理(lǐ)器,命中(zhōng)測試功能(néng)将自動處理(lǐ)這些設置以獲得最佳效果。
AR Raycast Manager 組件提供了一個字段,用(yòng)于定義在成功與平面相交時生成的預制體(tǐ)。在本示例中(zhōng),該字段被留空,因為(wèi)該功能(néng)由 Hit Testing Sample Controller 組件實現。
射線(xiàn)投射管理(lǐ)器的 Raycast 函數将返回一個布爾值,表示射線(xiàn)是否擊中(zhōng)了平面。命中(zhōng)結果将被添加到 ARRaycastHit 列表中(zhōng),并按距離升序排列(即最近的優先)。
示例場景中(zhōng)有(yǒu)一個默認的紅色 gizmo 指示器,它會跟随視線(xiàn)移動。每幀都會從頭部的起始點向視線(xiàn)方向發射一條射線(xiàn)。如果射線(xiàn)擊中(zhōng)一個平面,指示器 gizmo 的顔色會發生變化,并移動到擊中(zhōng)位置。如果射線(xiàn)沒有(yǒu)擊中(zhōng)任何物(wù)體(tǐ),指示器 gizmo 将保持不變。