我制作精灵套件游戏已经有一段时间了。就在最近,我添加了陀螺仪/倾斜功能。使用CMMotionManager
,我能够非常容易地访问这些数字。然而,我的问题是由于acceleration.x
值是如何存储的。
你看,我的游戏工作方式是,当游戏开始时,手机会根据当前的握持方式快速校准自己,然后我会对加速度.x值的变化做出反应(将手机保持在横向方向,这相当于将屏幕向你和远离你倾斜。)然而,平放手机是1.0,直接向你倾斜是0.0,然后,如果你超出这个范围,它会循环回这些值。因此,如果有人坐直了,他们的手机被校准为.1,然后他们把手机向下倾斜.2,结果将不是预期的。
有什么简单的方法来抵消这种影响吗?
为什么要为此创建自己的系统?你不应该直接使用加速度计的值。
有一个名为CMAttitude
的类,它包含有关设备方向的所有信息。
这个方位不是从加速度计数据中获取的,而是使用加速度计、陀螺仪和磁力计的组合来计算设备的当前姿态。
由此,您可以获得roll
、pitch
和yaw
值,并使用它们,而不必自己计算。
CMAttitude的课堂文档。