【Unity VR开发】结合VRTK4.0:瞬移

语录:

    到不了的地方都叫做远方,回不去的世界都叫做家乡,我一直向往的却是比远更远的地方。


前言:

         在VR场景中的移动主要有:瞬移和平移。瞬移相当于在虚拟世界中标记出目标位置,并自动传输到该位置,而无需任何进一步的输入。

        传送主要两种类型:

         Instant-用户指定位置,然后立即出现在目的地,通常带有相机淡入淡出已减少晕动症。

         Dash-用户指定位置,用户以线性运动逐渐移动,直到到达目标位置。


正文:

        瞬移(Instant):

                步骤一:

           首先按照前面的步骤进行基本的模块构建:CameraRigs.UnityXR、CameraRigs.TrackedAlias、Input.UnityInputManager.OpenVR.RightController、Input.UnityInputManager.OpenVR.LeftController。

                 步骤二:

           我们需要添加模块 :Indicators.ObjectPointers.Curved,用于作为监听器,监听手柄带来的指令。

 我们需要在游戏对象中指定对应的按键以及手柄。

                   步骤三:

            想要进行位置瞬移,就需要用到模块:Locomotors.Teleporter.Instant

Tilia -> Prefabs -> Locomotors -> Teleporter -> Locomotors.Teleporter.Instant

               ① 组件上的参数确定在传送方法上实际移动的游戏对象。通常,摄像机装备是我们想要移动的游戏对象,因为它包含我们的虚拟玩家。 

               ② 该参数确定另一个游戏对象,该游戏对象可用于描述移动目标时要考虑的偏移量,在这种情况下,偏移量是用户的头戴显示设备位置相对于其游玩区域之间的差异。

               ③传送器需要了解场景中要应用淡入淡出的摄像机。组件上的参数允许我们指定一种简单的链接方式。预制件包含游戏对象上所有已知场景摄像机的 。

                     步骤四:

               当用户通过按鼠标左键使用指针进行选择时,预制件都会发出目标位置数据,因此我们需要做的就是连接该选择事件以调用传送器。并选择要在发出事件时执行的函数。

                      Player:  

        当我们运行场景并点击对应的手柄按键发射到希望传送的地板位置上,进而告诉传送器传送到指针的目的地。目标会瞬间移动到指定的位置。

          逐渐平移(Dash):

                     步骤:

        移动的另一种方式就是逐渐平移,模块为:Indicators.ObjectPointer.Dash。

 Tilia -> Prefabs -> Locomotors -> Teleporter -> Locomotors.Teleporter.Dash

 将对应的游戏对象拖放到Locomotors.Teleporter.Dash中对应的位置:

接着将在Indicators.ObjectPointers.Curved中添加Locomotors.Teleporter.Dash中:

                      Player:

        当我们运行场景并点击对应的手柄按键发射到希望传送的地板位置上,进而告诉传送器传送到指针的目的地。然后就发现目标慢慢的移动到对应的位置。