我一直在构建一个Sprite Kit游戏已有一段时间了。就在最近,我一直在增加陀螺仪/倾斜功能。使用CMMotionManager
,我已经能够轻松地访问这些数字了。但是,我的问题是由于acceleration.x
值的存储方式而产生的。
你知道,我的游戏工作方式,当游戏开始时,手机会快速校准自己当前的状态,然后我会响应acceleration.x值的变化(将手机放在横向方向,这个相当于将屏幕朝向和远离您倾斜。)但是,将手机平放为1.0并将其直接向您倾斜为0.0,然后如果超出此范围,它会循环回过这些值。因此,如果有人坐直,他们的手机在.1校准,并且他们向下倾斜手机.2,结果将不是预期的结果。
有没有简单的方法可以抵消这种情况?
答案 0 :(得分:2)
你为什么要为此制作自己的系统?您不应该直接使用加速度计值。
有一个名为CMAttitude
的类,其中包含有关设备方向的所有信息。
此方向不是从加速度计数据中获取的,而是使用加速度计,陀螺仪和磁力计的组合来计算设备的当前姿态。
然后,您可以使用roll
,pitch
和yaw
值并使用这些值,而不必自己计算。