1、基础配置
2、物体配置:
给要交互的物体挂载 VRTK_InteractableObject、Collider、VRTK_ChildOfControllerGrabAttach
该组件标明该物体可交互、在该组件配置该物体下面的三种交互方式。
3、手柄配置:
a、给右手添加 VRTK_InteractGrab(用于Touch、Grab)。
该脚本自动添加 VRTK_InteractTouch、VRTK_ControllerActions、VRTK_ControllerEvents
b、(可选)右手添加 VRTK_InteractUse
效果:手柄触摸触发事件
基础效果,不会像下面Grab、Use一样,可以取消勾选IsUseable来使这些功能不发挥作用。
TouchHighlightColor:触摸时高亮的颜色
AllowTouchControllers:能被左手或右手交互
效果:手柄抓取触发事件
再给物体添加脚本 VRTK_ChildOfControllerGrabAttach,赋值给GrabAttachMechanicScripts属性。意味着抓取时该物体成为手的子物体。
IsGrabbable:勾选,下面配置的属性才会发挥作用。下同
HoldButtonToGrab: 勾选:按下Grab键,抓取起该物体。松开,该物体就掉落 不勾选:按一下,抓起来。再按一下,掉下来。
StayGrabbedOnTeleport:勾选,瞬移过程中仍能拿着该物体。否则,瞬移时该物体会松开。
ValidDrop:拿着物体,当按下手柄上Grap键时,由下面属性控制该物体怎样释放。 Bo_Drop:释放遵从 HoldButtonToGrab Drop_Anywhere:释放在任何地方,类似扔出效果(得有rigidbdoy) Drop_ValidSnapDropZone:放到可用的区域里面(当物体与该区域重叠,就释放在那)
GrabAttachMechanicScripts:抓取机制,作为抓取手柄子物体、实现攀爬效果等。后面文章讲解。
SecondaryGrabActionScripts:另一个手柄的抓取机制。可跟上面属性配合,可实现更丰富抓取效果。如双手持放、拖拉缩放等。
VRTK_ChildOfControllerGrabAttach脚本设置该属性:
PrecisionGrab:是否采用精确抓取。不勾选,抓取时该物体坐标与手柄坐标相同,吸附效果。勾选,在什么地方抓取,就在什么地方拿起来。
RightSnapHandle:实现抓取位置、方向设置(需取消上精确抓取属性)。在该物体下新建一个空物体赋值给这个属性。设置该空物体的Transform,即可设置抓取该物体时的方位。下方LeftSnapHandle是左手的设置。(可在运行时设置该空物体旋转方位属性,达到要求)
效果:手柄射线选中实现效果
是自己重写上述Touch和Grab效果,在抓取的各个阶段,实现自己想要的功能。
即抓取某物体后,手柄被替换成了该物体。
a、首先完成上述物体抓取/触摸/Use的相关配置
b、给物体再添加 VRTK_InteractControllerAppearance
HideControllerOnGrab:抓取后,抓取的控制器消失
HideDelayOnGrab:延迟x秒,控制器消失
a、首先完成上述物体抓取/触摸/Use的相关配置
b、给物体再添加 VRTK_InteractHaptics
Srrength、Duration、Interval分别是:力度、持续时间、间隔时间。
即不用自己挂代码、赋值属性,快速实现配置物体上述属性的方法:
选中物体,Windows——VRTK——SetupInteractableObject,将该对话框成为标签,能看到全部内容。
//赋值右手
public VRTK_Pointer vRTK_Pointer;
private void Start()
{
vRTK_Pointer.DestinationMarkerEnter += enter;
}
void enter(object sender,DestinationMarkerEventArgs e)
{
print(e.target.name);
}
效果1:手柄碰到物体,该物体整体高亮
a、新建Cube,选中Cube,Windows——VRTK——SetupInteractableObject,设置高亮颜色即可
b、现在手柄碰到该Cube,该Cube即可高亮
效果2:物体边缘高亮
物体挂载 VRTK_OutlineObjectCopyHighlighter,边缘高亮宽度Thickness设为0.5。
大家还有什么问题,欢迎在下方留言!