2012-12-20 95 views
0

我正在iOS上編寫遊戲,我正嘗試使用加速度計設置響應運動。所以當我在iPhone上開始遊戲時,一切都很好,並且加速度計在響應時沒有任何問題。但是,當我停止遊戲循環(暫停菜單),然後再次啓動時,屏幕上的實體跳轉到某個位置,然後幾秒鐘後又回到原位。我相信這是由於遊戲循環和加速計三角洲之間的差異而發生的。所以我想知道有什麼方法可以在iPhone上設置加速度計,以便在遊戲循環更新時只更新值?從UIAccelerometer是否可以設置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迪納GameLoop Tutorial採取

回答

0

當你暫停,你可以通過刪除委託停止監聽加速度事件:

[[UIAccelerometer sharedAccelerometer] setDelegate:nil]; 

然後在遊戲重新開始時再次設置加速度計。不應該需要更改返回的數據,只需忽略任何不需要的數據。

+0

謝謝你,工作。我不想改變任何數據,但似乎它被緩存然後釋放。 – Setrino

+0

如果您的遊戲循環位於不同的線程中,並且該線程的運行循環未運行,那麼它可以排隊來自加速度計的那些方法調用,因爲加速計在遊戲暫停時仍在調用委託。這可能是你所看到的。當線程恢復時,所有這些方法調用都會被執行。 – Kekoa

+0

這聽起來很合理。再一次感謝你。 – Setrino