在xcode 5中,我使用coremotion获取加速计数据,然后使用它在屏幕上向右/向左和向上/向下移动对象。右侧工作完美,因为x轴的0中心点是直线向上的。然而,大多数人的手机在y轴上的角度约为-75°。我想将其重置为0轴,以便当手机从此点向后倾斜时,物体向下移动,当它们从此点向前倾斜(朝向90度)时,物体向上移动。我已经尝试将y中心的最小值和最大值设置为各个点,但无论我做什么,对象仅相对于直接向上的原始y 0移动。这是我的代码。
在视图中加载了
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = .05;
[self.motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
[self outputAccelertionData:accelerometerData.acceleration];
if(error){
NSLog(@"%@", error);
}
}];
并分开
-(void)outputAccelertionData:(CMAcceleration)acceleration
{
delta.x = acceleration.x * 10;
delta.y = acceleration.y * 10;
imageView2.center = CGPointMake(imageView2.center.x - delta.x, imageView2.center.y + delta.y);
if (imageView2.center.x < 145) {
imageView2.center = CGPointMake(145, imageView2.center.y);
}
if (imageView2.center.x > 165) {
imageView2.center = CGPointMake(165, imageView2.center.y);
}
if (imageView2.center.y < 0) {
imageView2.center = CGPointMake( imageView2.center.x,0);
}
if (imageView2.center.y >600) {
imageView2.center = CGPointMake(imageView2.center.x,600);
NSLog(@"imageViewcenter%f",imageView2.center.y);
}
}
感谢您的帮助。