【问题标题】:Modifying Rotation w/ GamePad使用 GamePad 修改旋转
【发布时间】:2014-12-16 05:53:13
【问题描述】:

我想通过游戏手柄修改相机对象的旋转。我有在编辑器中工作的代码,但在 iOS 上不工作。 (但是,它看起来正在工作,但在第二帧被 VROne 代码推回)。

我能够使用 Rift 来完成这项工作,但还不能使用 VROne 解决这个问题。对于 Rift,我为 GamePad 操纵杆改变的旋转添加了一个“偏移量”。偏移量被计算到最终旋转中,其中还包括玩家的视线方向。

知道我将修改代码的哪一部分以使其与 VROne sdk 一起正常工作吗?

【问题讨论】:

    标签: unity3d vrone


    【解决方案1】:

    如果您想使用自己的 GameRotation 角度(来自游戏手柄),这些值可能会被集成的 HeadTracking 覆盖。您是否尝试过在 VROneSDKHead 对象中禁用 VR 头部跟踪脚本?

    HeadTracking 角度在 HeadTrackingIOS 类中处理,该类调用本机静态库。您可以尝试将您的游戏手柄偏移添加到第 43 行返回的四元数。

    希望这会有所帮助,让我们知道它是否有效!

    【讨论】:

      【解决方案2】:

      编辑:没关系,下面的代码在编辑器中工作,但在 iOS 设备上,相机仍然强制前进。我会尝试其他答案。

      酷——这可能有效,上面的答案。这听起来像我要找的东西。

      但是,根据 Unity 论坛上的建议,我实施了以下解决方案:首先,我将 VROne 对象设为另一个空游戏对象的子对象,localPosition 为 0,0,0。

      在旋转时,我旋转父级,但首先确保父级与子级的位置相同,然后子级localPosition为0,0,0 - -现在子级正在做物理运动,而父级旋转。我不确定将角色控制器移动到父级是否会起作用或在 SDK 中使其他东西变得更时髦,但这似乎目前可行。

      if (RightStickX.Value != 0)
      {
          transform.position                      = childObject.transform.position;
          childObject.transform.localPosition     = Vector3(0,0,0);
          transform.eulerAngles.y += RightStickX.Value * rotationSpeed * Time.deltaTime;
      }
      

      【讨论】:

        【解决方案3】:

        以防万一这对某人有所帮助,我能够以更简单的方式解决它。

        VrOneSDK 对象是我使用游戏手柄旋转的对象的子对象。 然后在'vrHeadTracking.cs'中我只是改变了

        transform.rotation = Quaternion.Inverse(initialRotation) * rot;
        

        transform.localRotation = Quaternion.Inverse(initialRotation) * rot;
        

        这样头部跟踪是相对于我的父对象的旋转。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-10
          • 2021-12-27
          • 1970-01-01
          • 2016-04-01
          相关资源
          最近更新 更多