加速度计校正 - 允许玩家从任何角度进行游戏

时间:2014-07-09 20:23:34

标签: ios iphone objective-c accelerometer

我希望加速度计工作,以便玩家可以在任何角度使用手机。理想情况下,我的代码会在手机开始游戏时记录手机的位置,然后他们就可以从游戏到游戏的任何位置进行游戏,而无需通过从该位置开始调整设置。

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration    *)acceleration
{

    NSLog(@"x : %g", acceleration.x);
    NSLog(@"y : %g", acceleration.y);
    NSLog(@"z : %g", acceleration.z);

    delta.y = acceleration.y;
    delta.x = acceleration.x;

    Player.center = CGPointMake(Player.center.x + delta.y, Player.center.y + delta.x);

  }

}

我已经搜索了很多很多线程并找到了很多答案,但没有一个我可以为我的程序工作。一个视频建议:

    delta.y = acceleration.y;
    delta.x = (acceleration.x)*cos(w) - acceleration.z*sin(w);

这似乎是正确的想法,但我不知道如何分配w。

1 个答案:

答案 0 :(得分:0)

我不编程iOS,所以我无法帮助你。我只是想指出你的请求中的理论上的不一致。如果您想根据手机的方向纠正移动,首先必须获得方向(仅限加速度计无法获得)。

你需要一些可以测量的东西,例如。磁场,陀螺仪(即旋转加速度计)。然后使用位置信息来校正(矩阵乘法)平移信息。

以下是一些数学背景:

http://electronic-engineering.ch/study/ins/ins.html#phys_math_bg

不要过分担心所有积分。如果你不想要最终的精确度,你可以改为总结并做一个近似。