所以我在遊戲中做一個基本的校準像這樣: 校準代碼:UIA加速度計校準後更敏感嗎?
- (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. 然而,這是問題: 我校準後,我的形象的運動的敏感性,因爲非常高,使它非常快速的運動。在校準之前,運動速度不錯,所以校準時必須出錯。
在這裏看起來有什麼不對嗎,我是否在計算中做錯了什麼?
謝謝!
「calibrationValue設爲從NSUserDefaults讀取的值「我在代碼中的任何地方都看不到'calibrationValue'。 –
我加了。對於那個很抱歉! :) –
好的,沒問題。但是,我仍然沒有看到在任何地方使用該變量。你的意思是'calibrationFloat'而不是這兩個不同的變量? (另外,我看到你問了一個有關這個問題的答案,說你正在做'rollingX'的計算不正確,你是否完全排除了這個問題?) –