使用GamePad修改旋转

时间:2014-12-16 05:53:14

标签: unity3d vrone

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

我能够通过Rift得到这个工作,但还没有能够用VROne解决这个问题。对于裂谷,我添加了一个"偏移"到GamePad操纵杆改变的旋转。偏移量计算为最终轮换,也包括球员的外观方向。

知道我修改的代码部分是为了让这个代码与VROne sdk一起使用吗?

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

酷 - 这可能有用,上面的答案。这听起来像我在寻找。

但是,根据Unity论坛上的建议,我实现了这个解决方案:首先,我使用localPosition 0,0,0来使VROne Object成为另一个空游戏对象的子项。

在旋转时,我旋转父级,但首先确保父级是子级的相同位置,然后子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;
}

答案 2 :(得分:0)

如果这对某人有帮助,我能够以更简单的方式解决它。

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

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

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

头部跟踪相对于我父对象的旋转方式。