2013年9月13日金曜日

加速度センサー入力

加速度センサーによるスプライトの移動
-(id) init
{
 if( (self=[super init]) ) {
  [self setAccelerometerEnabled:YES];
 }
}

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    CGPoint pos = sprite.position;
    pos.x += acceleration.x * 10;
    pos.y += acceleration.y * 10;
    sprite.position = pos;
}
だが、これでは反応が鈍い

スムーズに動かすためには下記に修正
-(id) init
{
    if( (self=[super init]) ) {
        [self setAccelerometerEnabled:YES];
        //updateをフレーム毎に呼び出す
        [self scheduleUpdate];
    }
}

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
    //速度の制御
    float deceleration = 0.4f; //減速の制御
    float sensitivity = 6.0f; //感度
    
    //速度調整
    moveSpeed.x = moveSpeed.x * deceleration + acceleration.x * sensitivity;
    moveSpeed.y = moveSpeed.y * deceleration + acceleration.y * sensitivity;
}

-(void)update:(ccTime)delta {
    
    CGPoint pos = sprite.position;
    pos.x += moveSpeed.x;
    pos.y += moveSpeed.y;
    sprite.position = pos;
}

0 件のコメント:

コメントを投稿