калибровка iPhone Accelerometer

Как я правильно калибрую акселерометр для своей игры iPhone? В настоящее время, когда телефон находится на плоской поверхности, дрейфы весла налево. Фильтры высоких частот или Фильтры низких частот не являются приемлемым решением, поскольку мне нужен полный контроль над веслом даже в низких и высоких значениях. Я знаю, что Apple имеет образец BubbleLevel, но я нахожу трудным следовать... кто-то мог упростить процесс?

Мой код акселерометра похож на это:

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {

float acelx = -acceleration.y;
float x = acelx*40;

Board *board = [Board sharedBoard];
AtlasSprite *paddle = (AtlasSprite *)[board.spriteManager getChildByTag:10];

if ( paddle.position.x > 0 && paddle.position.x < 480) {
    paddle.position = ccp(paddle.position.x+x, paddle.position.y);
}

if ( paddle.position.x < 55 ) {
    paddle.position = ccp(56, paddle.position.y);
}

if ( paddle.position.x > 435 ) {
    paddle.position = ccp(434, paddle.position.y);
}

if ( paddle.position.x < 55 && x > 1 ) {
    paddle.position = ccp(paddle.position.x+x, paddle.position.y);
}

if ( paddle.position.x > 435 && x < 0) {
    paddle.position = ccp(paddle.position.x+x, paddle.position.y);
}
}

Спасибо!

6
задан user2393462435 21 January 2010 в 22:34
поделиться

1 ответ

Хорошо, проблема решена, и решение настолько проще, я на самом деле смущает, что я не придумал это раньше. Это так же просто, как это:

в «кнопке калибровки»:

//store the current offset for a "neutral" position
calibration = -currentAccelX * accelerationFactor;

в функции акселерометра времени игры:

//add the offset to the accel value
float x = (-acceleration.y * accelerationFactor) + calibration;

Это так же просто, как добавление смещения. * скрывает голову *

9
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: