Objective c 如何校准加速度计?

Objective c 如何校准加速度计?,objective-c,ios,accelerometer,calibration,Objective C,Ios,Accelerometer,Calibration,我正试图从ViewA校准我的UIAccelerator,但我的游戏视图是ViewB。所以我想实现的是,假设用户是站在他们这边玩,我想让我的游戏表现得像他们坐在正常位置上玩一样 那么在ViewA中,我会这样做吗 float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"value1"]); [[NSUserDefaults standardUserDefaults] setFloat:

我正试图从ViewA校准我的
UIAccelerator
,但我的游戏视图是ViewB。所以我想实现的是,假设用户是站在他们这边玩,我想让我的游戏表现得像他们坐在正常位置上玩一样

那么在ViewA中,我会这样做吗

float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"value1"]);
[[NSUserDefaults standardUserDefaults] setFloat:accelX forKey:@"value1"];
那么在我的游戏课上,我会用我的委托方法来做这件事吗

float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]);
//Low Pass Filter
rollingX = (accelX * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
    AccelPoint.x += (rollingX*50);
然后我会这样做:

mySprite.position = ccp(accelX, yValue);
我做错什么了吗

谢谢

编辑:ViewB的新代码,我现在还需要某种形式的摩擦吗

    rollingX = (acceleration.x * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));     

AccelPoint.x += (rollingX*50);

然后,在该代码之后,我将设置对象的位置。

此问题中的示例似乎以与您描述的类似的方式进行校准:

视图A的示例代码:

float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"value1"]);
[[NSUserDefaults standardUserDefaults]setFloat:accelX-forKey:@“value1”]

这将存储一个预校准值。因此,如果您以前进行过校准,校准的影响将降至最低

我认为:

[[NSUserDefaults standardUserDefaults] setFloat:acceleration.x forKey:@"value1"];
也许你想要的更多。这样,您将在用户的起始位置消除重力的全部影响


视图B的代码似乎很好,但请记住这将允许角色的速度无限增加。考虑加入某种形式的摩擦力。< / P >你试过了吗?如果是这样,您看到了什么行为?是的,我已经尝试过了,似乎根本没有校准。我应该这样做吗?AccelX应该是AccelX:)无论如何,我想我只需要在X轴上校准,因为我的游戏只是纵向的,角色只通过X轴上的加速计移动。加速计为我处理的唯一运动是向左或向右移动我的角色,就这样。但是你做什么运动呢让你的角色左右移动?现在就和你一起移动。更新了我的答案,你可以试试。好的。但我不想消除重力,我需要保持它!:)你是说如果我在另一次校准后再次校准,旧值将被覆盖?