这几行 C# 代码使用加速度计计算手机绕 y 轴的旋转:
private float GetRoll() {
/*
* Sum up the accelerometer events
*/
Vector3 accelerationVector = Vector3.zero;
for (int i=0; i < Input.accelerationEventCount; i++) {
AccelerationEvent accEvent = Input.GetAccelerationEvent(i);
accelerationVector += accEvent.acceleration * accEvent.deltaTime;
}
accelerationVector.Normalize();
int inclination = (int) Mathf.Round(Mathf.Rad2Deg * Mathf.Acos(accelerationVector.z));
float roll = 0;
if (inclination < 25 || inclination > 155) {
/*
* How to calculate the rotation here?
*/
} else {
roll = Mathf.Round(Mathf.Rad2Deg * Mathf.Atan2(accelerationVector.x, accelerationVector.y));
}
return roll;
}
如果手机平放在桌子上,你知道让它工作的数学吗?即如果inclination
小于 25 度还是大于 155 度?该代码源自此 SO 帖子,其中提到可以使用指南针。不幸的是,我不知道如何,所以非常感谢您的建议。另外,如果可能的话,我想避免使用陀螺仪,而是坚持使用加速度计。
欢迎任何建议。谢谢你。