0

私は 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

4

1 に答える 1

0

一時停止すると、デリゲートを削除することで、加速度計イベントのリッスンを停止できます。

[[UIAccelerometer sharedAccelerometer] setDelegate:nil];

その後、ゲームが再開されたら、加速度計を再度セットアップします。返されるデータを変更する必要はありません。不要なデータは無視してください。

于 2012-12-20T21:50:26.700 に答える