gpt4 book ai didi

iphone - UIAccelerometer 校准后更灵敏?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:47:01 27 4
gpt4 key购买 nike

所以我在我的游戏中做了一个基本的校准,如下所示:校准代码:

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
[[NSUserDefaults standardUserDefaults] setFloat:acceleration.x forKey:@"X-Calibrate"];
}

然后在我的游戏 View 中,这些是加速度计的一些定义:

#define kFilteringFactor 0.13
#define MAXXACCELERATION 24

在我的游戏类的初始化方法中,我这样做:

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 设置图像的位置。 但这就是问题所在:校准后,我的图像移动的灵敏度非常高,因此移动非常快。在我校准之前,运动速度很快,所以校准一定出了问题。

这里似乎有什么不对劲,我是不是计算有误?

谢谢!

最佳答案

尝试添加同步,只是为了确保您在 NSUserDefaults 中写入了正确的值:

'因为您无法确定您的设置在读取之前是否已写入磁盘,所以您最好立即强制您的应用写入它

在苹果文档中:

synchronize Writes any modifications to the persistent domains to disk and updates all unmodified persistent domains to what is on disk.

  • (BOOL)synchronize Return Value YES if the data was saved successfully to disk, otherwise NO.

并尝试使用 setDouble: 而不是 setFloat(UIAccelerationValue x 被定义为 double... 当然以后阅读时使用 doubleForKey:)

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
[[NSUserDefaults standardUserDefaults] setDouble:acceleration.x forKey:@"X-Calibrate"];
if ([[NSUserDefaults standardUserDefaults] synchronize]) {
NSLog(@"OK: well written!!!");
}else {
NSLog(@"NO! Error!!!");
}

}

关于iphone - UIAccelerometer 校准后更灵敏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597509/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com