练习 - 使用 objectmanipulator 添加手部交互
ObjectManipulator 脚本支持手部和运动控制器输入模型的直接操控方式。 当脚本附加到对象时,用户可以用手移动、缩放或旋转对象。 在本练习中,你将创建两个立方体,向它们附加必要的脚本,然后四处移动它们。
添加并调整第一个立方体
在菜单栏中,选择“GameObject”“3D 对象”>“立方体”。
正方体的默认大小为一立方米,对于我们的目的来说太大。 我们将大小缩减到 20 立方厘米。
选择多维数据集,然后在检查器中将“转换”部分中的多维数据集的缩放值更改为以下内容:
X = 0.2,Y = 0.2,Z = 0.2
立方体在场景中的默认位置为 (0,0,0)。 这意味着立方体与用户的头戴显示设备位于同一位置,用户无法看到立方体,直到他们向后移动。 我们将更改立方体的位置值,使它位于更便于查看的位置。
在检查器中,将转换部分中立方体的位置值更改为以下内容:
X = -0.2,Y = 1.6,Z = 0.5
我们希望能看到立方体的三个面,因此还会更改立方体的旋转。
在检查器中,将Transform部分中立方体的旋转值更改为以下内容:
X = 9,Y = 14,Z = 0
小窍门
若要放大多维数据集,请选择它,确保光标悬停在 “场景 ”窗口上,然后按 F 键。 可通过这种方式放大任何对象。
向立方体添加脚本
若要使对象在使用跟踪手时可抓取,必须附加三个组件:
- 碰撞体组件(无需在此执行任何操作;Unity 的立方体默认已附加盒状碰撞体)
- 对象控器(脚本)组件
- 约束管理器(脚本)组件
在立方体仍然处于选中状态的情况下,在“检查器”窗口中,单击“添加组件”按钮,然后搜索并选择“对象操纵器”脚本。
对象控器脚本使用一两只手使对象可移动、可缩放和可旋转。 添加 Object Manipulator 脚本时,系统会自动添加 Constraint Manager 脚本,因为前者依赖于后者。
更新立方体的材料
出于性能考虑,建议使用 MRTK 材料而不是默认的 Unity 材料。
- 在仍选中该立方体的情况下,在网格呈现器组件上找到并展开“材料”部分。
- 将默认材料替换为位于 MRTK 标准资产>下的 MRTK_Standard_White 材料。 可以通过将材料直接拖动到“材料”部分中的“元素”字段来执行此作
添加第二个立方体
在“层次结构”中,右键单击该立方体,然后选择“复制”。 系统显示复制的立方体,名称为“Cube (1)”。
右键单击原始立方体,选择“重命名”,然后将其命名为“Near Cube”。
右键单击重复的多维数据集,选择“重命名”,然后将多维数据集命名为远方多维数据集。
目前,Scene 视图中似乎只有一个立方体。 这是因为 Near Cube 和 Far Cube 的位置完全相同。 我们可以更改 Far Cube 的位置和旋转。
使 Far Cube 仍处于选定状态,将其 Transform 组件中的值更改为以下值:
位置:X = 0.6、Y = 1.6、Z = 1.1
旋转:X = 27,Y = 0,Z = 0
现在,相机应该看到左侧的近立方体,远立方在右侧稍远一点。 若要确认这一点,请在层次结构中选择主相机(MRTK XR Rig>相机偏移下),然后在场景窗口中查看主相机窗口。
小窍门
如果希望 Scene 窗口中的视图更接近于摄像机所看到的实际场景,请在该窗口中四处滚动。 如果不是默认情况下,可能需要将相机的 “清除标志 ”设置为 Skybox 。
在播放模式下抓取和移动立方体
选择 “播放 ”按钮。 项目开始播放时,视图切换到 Game 窗口。
注释
在播放之前,请确认项目设置>MRTK3 下设置了有效的配置文件。
选择游戏窗口右上角上方的三点按钮,然后选择“最大化”。
按住 空格键 以使模拟的右手显示在视图中。
将模拟手移近邻近的立方体,直到它触摸立方体的侧面或底部。
单击鼠标左键(这会使手“抓住”立方体),然后在场景周围拖动立方体。
要抓取和移动 Far Cube,我们将使用模拟手附带的远指针。
如果需要,请再次按住 空格键 以使模拟的右手出现。 请注意从手的食指末端延伸出来的远指针。
朝 Far Cube 移动手,直到你看到指针末端移到在立方体上。 可能需要将手画几次圈,才能使指针末端出现在立方体上。
单击鼠标左键(这会使手靠近,呈我们所谓的“捏合手势”),然后在场景中拖动立方体。