我一直在使用OpenGL ES 2.0 for iPhone编写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];
出于某种原因,这导致倾斜在启用后立即完美运行。
然而,如果您多次触摸屏幕触发触摸并触摸结束功能,倾斜将再次失去同步,直到它再次同步,直到它再次同步为止。
应该注意的是,帧速率从不低于60,看起来加速计方法不会低于每秒更新60次,但不知何故不同步。
感谢。
答案 0 :(得分:0)
我已经通过使用UIAccelerometer切换到CMMotionManager来修复所有加速度计问题。我仍然不确定为什么导致这个问题,但从CMMotionManager获取加速度计数据似乎已经解决了任何问题。