我对移动设备的AR应用感兴趣,当然我想更好地使用指南针。
我唯一不得不反对的问题并不是指南针是多么抽搐。 (Angular Smoothing似乎很好地解决了这个问题)我的主要问题是当设备保持垂直时,罗盘值开始吓坏了。导致屏幕指南针在整个地方翻转。我不具备移动应用程序开发方面的丰富经验,因此我不确定导致此问题的原因是什么,如果它是Unity问题还是仅仅是数字罗盘的限制。我知道其他应用似乎可以在任何方向上使用指南针,但这对我来说都是愚蠢的新事物。
我确实尝试过以8的数字移动手机。我必须使用的设备是Nexus 4.
using UnityEngine;
using System.Collections;
public class Compass : MonoBehaviour {
// Use this for initialization
void Start () {
Input.location.Start ();
Input.compass.enabled = true;
}
// Update is called once per frame
void Update ()
{
var heading = Input.compass.trueHeading;
transform.eulerAngles = new Vector3 (0, 0, heading);
}
}
答案 0 :(得分:1)
首先,我不是专家(不幸的是)我会谈论的主题。但是,我仍然决定分享我的想法。
问题可以通过以下方式推广。你想要一个连续的函数,它采用一个3D矢量(在你的情况下是设备方向)并返回另一个与原始矢量正交的矢量。理论说(参见hairy ball theorem)对于某些论证,函数将返回零向量。如果这样的功能是指南针,当设备垂直定向时会返回零向量(如果您使用过普通的指南针,这会很自然)。
或者甚至你想要组合方法:
在这两种情况下,除罗盘外,还需要使用陀螺仪。