如何将设备加速转换为全局加速

时间:2018-05-22 10:13:18

标签: c# android unity3d rotation accelerometer

我正在为android开发一个统一应用程序,需要在加速度计的帮助下测量设备运动。问题是这些值包含重力。有人说为了消除重力,我必须将加速度转换为全局加速度然后只是从Z轴上移除重力,但我不知道该怎么做?这样做有什么特殊的统一功能吗?

由于

1 个答案:

答案 0 :(得分:0)

Unity论坛上的这个帖子清理了一切:

https://forum.unity.com/threads/unity-and-the-accelerometer-vs-the-gyroscope-a-complete-guide.451496/

正如Unity Technologies的“inkredibl”所说:

  

在Unity Gyroscope.rotationRate中是真正的陀螺仪数据   该类的其他属性使用其他传感器(如果可用)   提出对现实设备运动的更好估计。   Gyroscope.gravityGyroscope.userAcceleration与您有关   加速度计,但在其他传感器的帮助下,它们具有重力   与设备加速分离,使其更容易   开发人员使用(但这又是一个估计,他们不是   完美,只够接近。)

所以Gyroscope.userAcceleration就是这个问题的答案。

  

Input.acceleration是加速度计数据,用它来测量   g的倍数(Eearth的引力),这就是为什么它的大小为1时   设备未被移动。尝试在设备登录时进行记录   在空中抛出它应该接近于零(这是因为   该设备在那一刻处于自由落体状态)。 Compass.rawVector是   磁力计数据和该类的所有其他属性   使用各种传感器而不仅仅是磁力计。