練習 - 使用 ObjectManipulator 新增手部互動

已完成

ObjectManipulator 腳本支援 手部和運動控制器輸入模型的直接操作 方式。 當文稿附加至物件時,使用者可以用手移動、縮放或旋轉物件。 在此練習中,您將建立兩個 Cube,並將必要的指令碼附加至這些 Cube,然後將 Cube 四處移動。

新增並調整第一個 Cube

  1. 在功能表列中,選取 [GameObject] > [3D 物件] > [Cube]

    Screenshot of menu commands for adding the cube.

    Cube 的預設大小是一立方米,這對我們的用途而言太大。 我們將縮小到20立方釐米的大小。

  2. 選取 Cube,然後在 [偵測器] 中,將 [轉換] 區段中的 Cube Scale 值變更為下列專案:

    X = 0.2、Y = 0.2、Z = 0.2

    將 Cube 放置在場景中的預設位置 (0,0,0)。 這表示 Cube 與使用者的頭戴式裝置位於相同的位置,而且使用者在向後移動之前,將無法看到 Cube。 我們將變更 Cube 的位置值,使其位於較佳的位置以供檢視。

  3. 在偵測器,將 [轉換] 區段中 Cube 的 Position變更為下列專案:

    X = -0.2, Y = 1.6, Z = 0.5

    Screenshot of the cube's transform component after updates.

    我們想要能夠看到立方體的三邊,因此也會變更立方體的旋轉。

  4. 在偵測器,將 [轉換] 區段中 Cube 的 Rotation變更為下列專案:

    X = 9、Y = 14、Z = 0

    提示

    若要放大 Cube,請選取它,確定游標停留在場景視窗上方,然後按 F 鍵。 您可以透過這種方式放大任何物件。

將指令碼新增至 Cube

為了讓物件有追蹤的手部「可抓取」,必須對其附加三個元件:

  • 碰撞器元件 (您不需要在這裡執行任何動作;Unity 的 Cube 預設已附加 Box Collider)
  • 物件操作工具 (文稿) 元件
  • 條件約束管理員 (文稿) 元件
  1. 在仍選取 Cube 的情況下,選取 [偵測器] 視窗中的 [新增元件] 按鈕,然後搜尋並選取 [物件操作工具] 指令碼。

    Screenshot of adding the Object Manipulator script.

    物件操作工具文本會使用一或兩隻手讓對象可移動、可調整及旋轉。 當您新增物件操作工具指令碼時,也會自動新增條件約束管理員指令碼,因為物件操作工具指令碼對其具有相依性。

    Screenshot of the Constraint Manager script added to the cube.

更新 Cube 的材質

為了達到效能目的,我們建議使用 MRTK 材質,而不是預設的 Unity 材質。

  1. 在仍選取 Cube 之後,尋找並展開 Mesh 轉譯器元件上的 [材質 ] 區段。
  2. 將預設材質取代為位於 [MRTK 標準資產]>[材質] 底下的 MRTK_Standard_White 材質。 您可以將材質直接拖曳至 [材質] 區段中的 [元素] 欄位,以執行此動作

新增第二個 Cube

  1. 在 [階層] 中,以滑鼠右鍵按兩下 Cube,然後選取 [複製]。 重複的 Cube 隨即出現,名稱為 Cube (1)。

  2. 以滑鼠右鍵按下原始 Cube,選取 [重新命名],然後將 Cube 命名為 [接近 Cube]。

  3. 以滑鼠右鍵按鍵按鍵按鍵按鍵的 Cube,選取 [重新命名],然後將 Cube 命名為 Far Cube

    目前,看起來像是 [場景] 檢視中只有一個 Cube。 這是因為 Near Cube 和 Far Cube 位於相同的位置。 讓我們變更 Far Cube 的位置和旋轉。

  4. 在仍選取 [Far Cube] 的情況下,將其 [轉換] 元件中的值變更為下列各項:

    位置:X = 0.6、Y = 1.6、Z = 1.1

    旋轉:X = 27、Y = 0、Z = 0

    現在相機應該會看到左邊的近立方體,而遠方在右邊稍遠一點。 若要確認這一點,請在 [階層] 中選取 [主要 相機 [MRTK XR Rig> 相機 Offset],然後查看 [場景] 視窗中的 [主要 相機] 視窗。

    Screenshot of the Main Camera view in the Scene window.

    提示

    如果您想要讓 [場景] 視窗中的檢視看起來更像相機所看到的景象,請在 [場景] 視窗中來回捲動。 如果您不是預設,您可能必須將相機的 Clear Flags 設定為 Skybox

在播放模式中抓取並移動 Cube

  1. 選取 [ 播放] 按鈕。 當專案開始播放時,檢視會切換至 [遊戲] 視窗。

    Screenshot of the Game window after entering Play mode.

    注意

    在播放之前,請確認 Project 設定> MRTK3 底下有有效的配置檔集。

  2. 選取遊戲視窗右上角的三點按鈕,然後選取 [最大化]。

    Screenshot of Maximize command for the Game window.

  3. 按住空格鍵,讓仿真的右手出現在檢視中。

  4. 將仿真的手移到接近 Cube,直到它觸碰側或底部的立方體為止。

    Screenshot of the simulated right hand touching the Near Cube.

  5. 按兩下滑鼠左鍵(這會讓手部「抓取」立方體),然後將立方體拖曳到場景中。

    Screenshot of Move the cube.

    為了抓取並移動 Far Cube,我們將使用附加至模擬手部的遠指標。

  6. 如果您需要,請再次按住 空格鍵 ,讓仿真的右手出現。 請注意從手部食指尾端延伸的遠指標。

    Screenshot of simulated hand's far pointer.

  7. 將手往 Far Cube 移動,直到您可以看到立方體上的指標尖端為止。 您可能需要在迴圈動作中移動手部數次,讓指標的尖出現在 Cube 上。

    Screenshot of the far pointer touching the cube.

  8. 按兩下滑鼠左鍵(這會關閉手部,採取我們所謂的「捏合手勢」),然後將立方體拖曳到場景中。