我一直在使用适用于iPhone的OpenGL ES 2.0编写c ++游戏引擎。但是,在使用加速度计时,我得到了奇怪的结果。
我有一个在加速度计输入下在2D世界中移动的角色。最初,当游戏开始时,运动会延迟10秒。延迟是指如果您倾斜手机将角色向右移动,直到0.5秒后角色才会向右移动。我通过调用以下代码解决了这个问题:
UIAccelerometer *accel = [UIAccelerometer sharedAccelerometer];
accel.updateInterval = 1.0f/60.0f;
accel.delegate = self;
调用此代码后2秒钟,而不是同时调用:
displayLink = [self.window.screen displayLinkWithTarget:self selector:@selector(drawFrame)];
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
由于某种原因,这导致倾斜功能在启用后即可完美工作。
但是,如果您多次触摸屏幕以触发触摸开始和触摸结束功能,则倾斜将再次不同步,直到15秒钟左右才重新同步。
应该注意的是,帧速率从不降到60以下,并且加速度计方法似乎没有降到每秒更新60次以下,但不知何故不同步。
谢谢。
最佳答案
通过从使用UIAccelerometer切换到CMMotionManager,我已经解决了所有加速度计问题。我仍然不确定为什么导致此问题,但是从CMMotionManager获取加速度计数据似乎可以解决所有问题。
关于iphone - 无响应的加速度计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17758554/