Unity3d 使用游戏板修改旋转

Unity3d 使用游戏板修改旋转,unity3d,vrone,Unity3d,Vrone,我想通过游戏板修改相机对象的旋转。我有在编辑器中工作的代码,但在iOS上不工作。然而,它看起来好像在工作,但在第二帧被VROne代码推回 我能在裂缝处工作,但还不能用VROne解决。对于裂谷,我添加了一个由GamePad操纵杆更改的旋转偏移。偏移量被计算到最终旋转中,其中还包括球员的注视方向 你知道我会修改代码的哪一部分以使其与VROne sdk正常工作吗?如果你想从游戏板使用你自己的游戏旋转角度,这些值可能会被集成的人头跟踪覆盖。您是否尝试过在VROneSDKHead对象中禁用VR头部跟踪脚本

我想通过游戏板修改相机对象的旋转。我有在编辑器中工作的代码,但在iOS上不工作。然而,它看起来好像在工作,但在第二帧被VROne代码推回

我能在裂缝处工作,但还不能用VROne解决。对于裂谷,我添加了一个由GamePad操纵杆更改的旋转偏移。偏移量被计算到最终旋转中,其中还包括球员的注视方向


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

如果你想从游戏板使用你自己的游戏旋转角度,这些值可能会被集成的人头跟踪覆盖。您是否尝试过在VROneSDKHead对象中禁用VR头部跟踪脚本

头跟踪角度在HeadTrackingIOS类中处理,该类调用本机静态库。您可以尝试将gamepad偏移量添加到第43行返回的四元数

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

EDIT:Nevermind,下面的代码在编辑器中工作,但在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;
}

为了以防万一,我可以用一种更简单的方法来解决这个问题

VrOneSDK对象是我正在使用gamepad旋转的对象的子对象。 然后在“vrHeadTracking.cs”中,我简单地改变了

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

这样,头部跟踪相对于父对象的旋转

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