2013-07-20 17 views
2

我一直在編寫一個使用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]; 

出於某種原因,這引起了傾斜儘快完美運行它被啓用。但是,如果觸摸屏幕多次觸發觸摸開始並觸摸結束功能,則傾斜將再次失去同步,並且直到15秒鐘左右它纔會再次同步。

應該注意的是,幀速率永遠不會低於60,似乎加速度計方法不會低於每秒更新60次,但不知何故會失去同步。

謝謝。

回答

0

我已經通過從使用UIAccelerometer切換到CMMotionManager來解決所有加速度計問題。我仍然不確定爲什麼造成這個問題,但從CMMotionManager獲取加速度計數據似乎解決了任何問題。