在我的应用程序中,我使用加速计来控制游戏中的角色。现在我只允许纵向定位,因此用户必须将设备向右或向左倾斜才能移动角色。到目前为止,这工作得很好。我现在想要完成的是“校准”加速度计,以考虑用户正在玩的当前倾斜。让我们说用户在他们身边,价值将会倾斜,因为它没有考虑到这个起点,所以他们将无法控制角色。所以我试图说明这个初始倾斜量,然后在游戏过程中考虑它,但是它不起作用。校准UIA加速度计?
所以我在我的非游戏以“校准”加速度计一个按钮,这是它执行的代码:
这是IBAction为
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1.0f/30.0f];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
这是加速度计委托调用
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
[[NSUserDefaults standardUserDefaults] setFloat:acceleration.x forKey:@"X-Calibrate"];
[[UIAccelerometer sharedAccelerometer] setDelegate:nil];
}
然后在我的游戏显示在init我将iVar calibrationFloat设置为我在NSUserDefaults中设置的值。然后我还有一个kFilteringFactor来摆脱小小的不安。因此,这是这台rollingX等于一切游戏加速计委托方法,然后我谨基于rollingX字符:
- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
rollingX = ((acceleration.x - calibrationFloat) * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));
}
但是这是行不通的,校准似乎并没有做任何事情,我不确定为什么。有没有人设置为什么这不会工作?
会有什么办法可以提供代码示例吗?我自己并不太熟悉加速度计和矩阵,所以我发布了代码示例的赏金。非常感谢! –
我之前做过类似的事情,但我无法告诉你我头顶的恐惧。看看这个博客文章,但希望这应该有所帮助! http://www.paradeofrain.com/2010/07/lessons-learned-in-tilt-controls/ –
任何运气与该博客文章?还有什么问题请告诉我! –