だから私は自分のゲームで次のような基本的なキャリブレーションを行いました: コードのキャリブレーション:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
[[NSUserDefaults standardUserDefaults] setFloat:acceleration.x forKey:@"X-Calibrate"];
}
次に、私のゲーム ビューでは、これらは加速度計のいくつかの定義です。
#define kFilteringFactor 0.13
#define MAXXACCELERATION 24
ゲーム クラスの init メソッドで、次のようにします。
calibrationFloat = [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"];
次に、これを行います:
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
//Low Pass Filter (gets rid of little jitters) + Calibration value combined
rollingX = ((acceleration.x - calibrationFloat) * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
}
calibrationFloat は、ゲーム開始前に NSUserDefaults から読み取った値に設定されます。
次に、ゲームループでこれを行います:
int rollingAmount = (IS_IPAD() ? 52 : 44);
CGFloat xFloat = (rollingX * rollingAmount);
pos.x += xFloat < -MAXXACCELERATION ? -MAXXACCELERATION : (xFloat > MAXXACCELERATION ? MAXXACCELERATION : xFloat);
次に、pos.x に基づいて画像の位置を設定します。ただし、これが問題です。 キャリブレーション後、画像の動きの感度が非常に高くなり、動きが非常に速くなります。キャリブレーションする前は、動きは順調に進んでいるので、キャリブレーションで何か問題が発生しているに違いありません。
ここで何かが正しくないように見えますが、計算に何か問題がありますか?
ありがとう!