将3d对象与设备的陀螺仪统一对齐

时间:2018-06-19 13:17:48

标签: unity3d 3d quaternions

我有一个统一的3d对象,我想要与设备(当前为android)的确切方向。

我尝试使用:

transform.rotation = Input.gyro.attitude;

了解陀螺仪左手的右手反手之后:

Quaternion q = Input.gyro.attitude;
transform.rotation = new Quaternion (q.x, q.y, -q.z, -q.w);

但是它们都给出了错误的结果,当我从右向左旋转设备时,对象绕轴旋转。

当我尝试这样做时:

    Quaternion q = Input.gyro.attitude;
    q = new Quaternion (q.x, q.y, -q.z, -q.w);
    transform.rotation = q * Quaternion.Euler (-90f, 0f, 0f)

该对象面向西而不是朝西

我应该对轮换使用哪种操作?谢谢。

1 个答案:

答案 0 :(得分:0)

尽管我最初的问题是如何将对象附加到陀螺仪上,但是我还是设法解决了该问题。

我发现的解决方案是将相机本身安装到陀螺仪上:

        Quaternion q = gyro.attitude;
        q = new Quaternion (q.x, q.y, -q.z, -q.w);
        Camera.main.transform.rotation = q;
        Camera.main.transform.Rotate(90f, 0f, 0f, Space.World);

在那之后,我将该物体作为照相机的子代,从而解决了问题。

具体地说,这在android上有效,未在ios上检查过。