我想通过游戏手柄修改相机对象的旋转。我的代码在编辑器中有效,但在iOS上不起作用。 (但是,它似乎正在工作,但被VROne代码推回到第二帧)。
我能够通过Rift得到这个工作,但还没有能够用VROne解决这个问题。对于裂谷,我添加了一个"偏移"到GamePad操纵杆改变的旋转。偏移量计算为最终轮换,也包括球员的外观方向。
知道我修改的代码部分是为了让这个代码与VROne sdk一起使用吗?
答案 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;
头部跟踪相对于我父对象的旋转方式。