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