语录:
取酒酿晚风,赠我一场空。
前言:
获取可交互对象的默认方法是将可交互对象的原点与交互器的原点对齐。此机制适用于基本抓取,但有时当您想要抓取某个对象时,您可能希望将可交互对象定向到特定位置并旋转到交互器。
一个很好的例子是,当你拿起一把剑时,你会希望剑可交互自然地将自己定向到抓取控制器交互器,所以感觉就像你实际上拿着一把剑。我们可以通过使用组件上的属性来确定我们的可交互对象如何在抓取上定向来实现这个方向。
正文:
步骤一:
首先,我们需要创建基本条件:CameraRigs.TrackedAlias(追踪器)、CameraRigs.UnityXR(头显)、Input.UnityInputManager.OpenVR.RightController(右手控制器)、Input.UnityInputManager.OpenVR.LeftController(左手控制器):
步骤二:
我们需要在CameraRigs.TrackedAlias->Aliases->LeftControllerAlias(RightControllerAlias)下面创建Interactions.Interactor:
步骤三:
我们需要给 Interactions.Interactor指定对应的Grad Action和Velocity Tracker:
步骤四:
我们需要在CameraRigs.TrackedAlias->Aliases->LeftControllerAlias(RightControllerAlias)下面创建Interactions.ActionPublisher:
步骤五:
我们需要给 Interactions.ActionPublisher指定对应的Source Action和Source Interactor:
步骤六:
新建游戏对象:Interactions.Interactable,然后选择Interactions.Interactable -> Mesh Container -> Cube 复制两个,分别更改属性:
步骤七:
修改游戏对象Interactions.Interactable的属性:
点击按钮,找到“OrientationHandles”对象:
步骤八:
我们希望确保剑始终有向外的护罩指向外部,无论我们用左控制器还是右控制器抓住,因此为此,我们可以为每个控制器设置不同的方向手柄。
所以我们要修改属性, OrientationHandles -> OrientationHandleCollection -> GenericOrientationHandle:
步骤九:
我们希望确保剑始终有向外的护罩指向外部,无论我们用左控制器还是右控制器抓住,因此为此,我们可以为每个控制器设置不同的方向手柄。
然后我们需要复制一个 GenericOrientationHandle,然后更改属性:
步骤十:
最后我们要为 OrientationHandles 配置对应的属性: