9.3.3 向虚拟对象添加交互控制组件
图9.17 Box Collider组件
在MRTK中,要想让虚拟对象可被手势跟踪和抓取,需要添加三个组件:碰撞体组件,Object Manipulator脚 本、NearInteractionG.rabble脚本。对于Unity内置的基本对象(如Cube、Sphere等)而言,已默认附加碰撞体组件,不需重复添加。本例中,需要对Cappuccino对象添加Box Collider组件。
选中near_gift对象,在Inspector面板中,单击最下方的Add Component按钮,在搜索栏中输入“Box Collider”,选中Box Collider,即添加了碰撞体组件,如图9.17所示。
继续添加对象操控器脚本。单击“Add Component”按钮,搜索并选择“Object Manipu.late”脚本,此脚本能够让虚拟对象可以移动、缩放、旋转,并通过单手或双手就能实现操控。在添加了Object Manipulator脚本后,系统还会自动添加Constraint Manager脚本,这是由两者的依赖关系决定的,如图9.18所示。
图9.18 添加脚本组件
使用相同的方法,添加Near Interaction Grabbable脚本组件。此组件能够让用户使用模拟手来触碰和抓取附近的虚拟对象,如图9.19所示。
图9.19 添加NearInteractionGrabbable组件
添加较远处的虚拟对象。从Assets面板中,将gift_3.prefab对象拖至Hierarchy面板中,更名为“far_gift”,同样将其Scale参数设置为:X=0.1,Y=0.1,Z=0.1。并调整其Position参数为:X=0.3,Y=0.1,Z=1,使其位置稍远一些。Scene面板俯视图、Game面板如图9.20所示。可以看到near_gift位于左侧较近一些,far_gift位于右侧稍远一些的位置。
图9.20 调整far_gift位置
按照前述方法,依次给far_gift添加Box Collider、Object Manipulator、Near Interac.tion Grabbable三个组件。