检测陀螺仪相机的初始方向,但仅航向

时间:2018-08-31 16:13:43

标签: c# unity3d camera orientation gyroscope

所以我使用的是我在这里(How to enable gyroscope camera at current device orientation)上找到的脚本,但我只希望此初始设备方向会影响标题。

Quaternion offset;

void Awake()
{
    Input.gyro.enabled = true;
}

void Start()
{
    //Subtract Quaternion
    offset = transform.rotation * Quaternion.Inverse(GyroToUnity(Input.gyro.attitude));
}

void Update()
{
    GyroModifyCamera();
}

void GyroModifyCamera()
{
    //Apply offset
    transform.rotation = offset * GyroToUnity(Input.gyro.attitude);
}

private static Quaternion GyroToUnity(Quaternion q)
{
    return new Quaternion(q.x, q.y, -q.z, -q.w);
}

对于背景故事,我有一些内部效果图,并带有陀螺仪控件,可以环顾整个空间。我不想影响整个世界的方向,我只是希望它们以最佳的空间视角面向“正确的”方向。 (如果不是,则仅取决于设备的方向及其跳入某个空间的角度,该空间注视着房间的随机,无趣的角落。)

使用上面的脚本,它会在所有三个轴上(因此在整个世界方向上)重置摄影机,因此,如果用户以不寻常的角度握住平板电脑,那么事情会变得很奇怪。

这里有一张简短的图片来辅助说明:

camera angle issue

我一直希望初始视图与绿色箭头对齐,而不是像红色箭头那样随意排列。但是只是标题,只要标题正好在房间的最佳位置,就可以看着地板或天花板。

谢谢!

0 个答案:

没有答案