是否可以设置UIAccelerometer delta?

时间:2012-12-20 14:07:09

标签: iphone ios uiaccelerometer delta game-loop

我正在iOS上编写游戏,我正在尝试使用加速度计设置响应移动。因此,当我在iPhone上启动游戏时,一切都很好,加速度计响应没有问题。但是当我停止游戏循环(暂停菜单),然后再次启动时,屏幕上的实体会跳到某个地方,然后在几秒钟后重新启动。我相信这是由于游戏循环和加速度计的增量之间的差异而发生的。所以我想知道有没有办法在iPhone上设置加速度计只在游戏循环更新时更新值?

UIAccelerometer的值是这样读的(我只需要x轴) - (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { accelerometValues[0] = acceleration.x * 0.1f + accelerometValues[0] * (1.0 - 0.1f); }

加速度计的设置如下 [[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0 / 60.0]; [[UIAccelerometer sharedAccelerometer] setDelegate:currentScene];

游戏循环本身取自Alex Diener的教程GameLoop Tutorial

1 个答案:

答案 0 :(得分:0)

暂停时,您可以通过删除委托来停止侦听Accelerometer事件:

[[UIAccelerometer sharedAccelerometer] setDelegate:nil];

然后在游戏恢复时再次设置加速度计。不需要更改返回的数据,只需忽略您不需要的任何数据。