首页 > 解决方案 > 检测陀螺仪相机的初始方向,但仅检测航向

问题描述

所以我正在使用我在这里找到的脚本(如何在当前设备方向启用陀螺仪相机)但我只希望这个初始设备方向影响航向。

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);
}

对于背景故事,我有一些室内效果图,带有陀螺仪控制环视空间。我不想影响整个世界的方向,我只想让他们面向“正确”的方向,就空间的最佳视角而言。(如果不是,这仅取决于设备的定向方式以及跳入空间查看房间随机、无趣的角落的常见情况。)

使用上面的脚本,它会重置所有三个轴上的相机(以及整个世界方向),所以如果用户以不寻常的角度拿着平板电脑,那么事情就会变得非常奇怪。

这是一张帮助解释的快速图片:

相机角度问题

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

谢谢!

标签: c#unity3dcameraorientationgyroscope

解决方案


推荐阅读