練習 - 使用求解器建立智慧型物件放置

已完成

求解器是混合實境工具組 (MRTK) 的其中一個元件。 讓我們看看兩種類型的求解器及其各自的功能。

MRTK 中求解器的位置

MRTK 的求解器位於 MRTK SDK 資料夾中。 若要查看專案中可用的求解器,請在 [專案] 視窗中,移至 [套件]>[MRTK 空間操作]>[求解器]。

顯示 solvers 資料夾位置的螢幕擷取畫面。

方向性指標求解器

使用「方向性指標求解器」將使用者導向至物件。 方法如下:

  1. 在 [專案] 視窗中,瀏覽至 [資產] > [MRTK.Tutorials.GettingStarted] > [預製物件]。 將 [Chevron] 預製物件拖曳至 [階層] 視窗,然後設定其轉換 [位置] 為 X = 0、Y = 1.5、Z = 2,將其放置在 RoverExplorer 物件附近。

    顯示所選取的已新增 Chevron 預製物件螢幕擷取畫面。

  2. 將新加入的 Chevron 物件重新命名為 Indicator。 然後,在 [偵測器] 視窗中,選取 [新增元件] 以新增 DirectionalIndicator

    顯示所新增 DirectionalIndicator 求解器元件的螢幕擷取畫面。

  3. 設定 DirectionalIndicatorSolverHandler 元件,如下所示:

    a. 確認 SolverHandler 元件的 [追蹤目標類型] 設定為 [頭部]

    b. 藉由將其從 [階層] 拖曳至 [無 (轉換)] 欄位,將 RoverExplorer 指派至 DirectionalIndicator 元件的 [方向目標]

    c. 將 [檢視位移] 變更為 0.2

    顯示所設定 DirectionalIndicator 求解器元件的螢幕擷取畫面。

  4. 若要進入 [遊戲] 模式,請按下 [開始遊戲]。 在向左或向右移動滑鼠時,按住滑鼠右鍵來旋轉您的注視方向。

    請注意,當您查看 RoverExplorer 物件時,Indicator 物件會出現,並指向 RoverExplorer 物件。

    顯示播放模式分割檢視並且正在使用 DirectionalIndicator 求解器的螢幕擷取畫面。

點選放置求解器

使用點選放置求解器來重新置放物件。 方法如下:

  1. 在 [階層] 視窗中,選取 [RoverExplorer] > [RoverAssembly] 物件。 然後在 [偵測器] 中,使用 [新增元件] 來新增 [點選放置] 元件。 設定元件,如下所示:

    a. 確認 SolverHandler 元件的 [追蹤目標類型] 設定為 [頭部]

    b. 取消核取 [使用預設表面一般位移],並且確定 [表面一般位移] 設定為 0。

    c. 選取 [保持垂直方向] 核取方塊。

    顯示所新增和設定點選放置求解器元件的螢幕擷取畫面。

  2. 接下來,使用 [新增元件] 來新增具狀態 Interactable 元件。 在 [偵測器] 視窗中,找出 [On Clicked ()] 事件。 選取 + 圖示以新增新事件。 設定事件,如下所示:

    a. 藉由從 [階層] 將 RoverAssembly 物件拖曳至 [無 (物件)] 欄位,將其指派為 [On Clicked ()] 事件的接聽程式。

    b. 從 [沒有函式] 下拉式清單中選取 [TapToPlace]>[StartPlacement()],即可在事件觸發時呼叫此方法。

    顯示所設定「開始放置時的點選放置」事件的螢幕擷取畫面。

  3. 在 [階層] 視窗中,保持選取 RoverAssembly 物件,在 [偵測器] 視窗中,找出 [放置開始時 ()] 事件。 選取 + 圖示以新增新事件。

    顯示所新增「開始放置時的點選放置」事件的螢幕擷取畫面。

  4. 設定事件,如下所示:

    a. 藉由從 [階層]RoverAssembly 物件拖曳至 [無 (物件)] 欄位,將其指派為 [On Placing Started ()] 事件的接聽程式。

    b. 從 [沒有函數] 下拉式清單中,選取 [TapToPlace]>[float SurfaceNormalOffset],以在觸發事件時更新 SurfaceNormalOffset 屬性值。

    c. 確認引數已設定為 0

    顯示所設定「開始放置時的點選放置」事件的螢幕擷取畫面。

  5. 在 [階層] 中,以滑鼠右鍵按一下空白位置。 選取 [3D 物件] > [Cube],以建立代表地面的暫存物件,並設定 [Transform] 元件,如下所示:

    • 位置: X = 0、Y = 0.15、Z = 6
    • Rotation (旋轉):X = 0、Y = 0、Z = 0
    • 縮放:X = 10、Y = 0.2、Z = 10

    顯示所新增和定位暫時性接地 Cube 物件的螢幕擷取畫面。

  6. 若要進入 [遊戲] 模式,請按下 [開始遊戲]。 然後在將滑鼠向下移動時按住滑鼠右鍵,直到注視到達 RoverAssembly 物件為止。

    顯示播放模式分割檢視,以及叫用 RoverAssembly 物件的注視螢幕擷取畫面。

  7. 按住空格鍵並按一下滑鼠左鍵以執行空中點選,然後啟動點選放置程序。

    顯示播放模式分割檢視並開始放置的螢幕擷取畫面。

  8. 在向左或向右移動滑鼠時,按住滑鼠右鍵來旋轉您的注視方向。 當您滿意放置時,請按住空格鍵並按一下滑鼠左鍵以結束空中點選。

    顯示播放模式分割檢視並結束放置的螢幕擷取畫面。

  9. 在 [遊戲] 模式中完成功能的測試之後,以滑鼠右鍵按一下 Cube 物件,然後選取 [刪除] 將其從場景中移除。

    顯示如何刪除暫時性接地 Cube 的螢幕擷取畫面。