2

xcode 5 では、coremotion を使用して加速度計のデータを取得し、それを使用して画面上でオブジェクトを左右および上下に移動しています。x 軸の 0 中心点が真上にあるため、右左は完全に機能します。ただし、ほとんどの人は、y 軸に対して約 0.-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);
            }
 }

助けてくれてありがとう。

4

0 に答える 0