0

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

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

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

4

3 回答 3

0

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

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

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

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

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

于 2015-04-20T19:32:01.450 回答
0

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

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

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

于 2014-12-18T12:11:15.313 回答
0

编辑:没关系,下面的代码在编辑器中工作,但在 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;
}
于 2014-12-18T23:26:30.663 回答