我希望加速度计工作,以便玩家可以在任何角度使用手机。理想情况下,我的代码会在手机开始游戏时记录手机的位置,然后他们就可以从游戏到游戏的任何位置进行游戏,而无需通过从该位置开始调整设置。
-(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。
答案 0 :(得分:0)
我不编程iOS,所以我无法帮助你。我只是想指出你的请求中的理论上的不一致。如果您想根据手机的方向纠正移动,首先必须获得方向(仅限加速度计无法获得)。
你需要一些可以测量的东西,例如。磁场,陀螺仪(即旋转加速度计)。然后使用位置信息来校正(矩阵乘法)平移信息。
以下是一些数学背景:
http://electronic-engineering.ch/study/ins/ins.html#phys_math_bg
不要过分担心所有积分。如果你不想要最终的精确度,你可以改为总结并做一个近似。