响应Sprite Kit中iPhone的倾斜度

时间:2014-10-01 14:56:07

标签: xcode cmmotionmanager

我一直在构建一个Sprite Kit游戏已有一段时间了。就在最近,我一直在增加陀螺仪/倾斜功能。使用CMMotionManager,我已经能够轻松地访问这些数字了。但是,我的问题是由于acceleration.x值的存储方式而产生的。

你知道,我的游戏工作方式,当游戏开始时,手机会快速校准自己当前的状态,然后我会响应acceleration.x值的变化(将手机放在横向方向,这个相当于将屏幕朝向和远离您倾斜。)但是,将手机平放为1.0并将其直接向您倾斜为0.0,然后如果超出此范围,它会循环回过这些值。因此,如果有人坐直,他们的手机在.1校准,并且他们向下倾斜手机.2,结果将不是预期的结果。

有没有简单的方法可以抵消这种情况?

1 个答案:

答案 0 :(得分:2)

你为什么要为此制作自己的系统?您不应该直接使用加速度计值。

有一个名为CMAttitude的类,其中包含有关设备方向的所有信息。

此方向不是从加速度计数据中获取的,而是使用加速度计,陀螺仪和磁力计的组合来计算设备的当前姿态。

然后,您可以使用rollpitchyaw值并使用这些值,而不必自己计算。

Class documentation for CMAttitude.