объект движется в акселерометре

Я хочу создать одну игру в cocos2d, в которой работает один объект.

Я хочу переместить этот объект с левой и правой базы на акселерометр устройства. Я получаю значение акселерометра и обновляю местоположение объекта. даже я могу видеть новое местоположение в ЖУРНАЛЕ. но объект не движется со своего места. вот код, который я написал в приложении.

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

acceleration = acceleration1;
CGPoint position = mainPlayer.position;

if(acceleration.y < -0.25) {  // tilting the device to the right
    position.y -= 0.25;
} else if (acceleration.y > 0.25) {  // tilting the device to the left
    position.y += 0.25;
} else {

} //    newPosition = position;

CCAction *action = [CCMoveTo actionWithDuration:0.01 position:position];
[mainPlayer runAction:action]; 
//    mainPlayer.position = ccp(position.x, position.y);
}

Я попробовал оба способа, установив прямую позицию и используя действие.

Кто-нибудь знает, почему возникает эта проблема или какие настройки необходимы для работы акселерометра.

Приведите любую ссылку для такого доброго примера.


person Crazy Developer    schedule 05.06.2012    source источник


Ответы (2)


Попробуйте использовать MoveBy вместо MoveTo:

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

    acceleration = acceleration1;
    CGPoint position = ccp(0,0);

    if(acceleration.y < -0.25) {  // tilting the device to the right
        position.y = 0.25;
    } else if (acceleration.y > 0.25) {  // tilting the device to the left
        position.y = 0.25;
    }

    CCAction *action = [CCMoveBy actionWithDuration:0.01 position:position];
    [mainPlayer runAction:action]; 
 }
person sergio    schedule 05.06.2012

Я посоветую не запускать действия с акселерометра, так как этот метод вызывается примерно 10 раз в секунду (я не помню, как cocos2d инициализирует акселерометр), что приведет к вызову метода runAction 10 раз в секунду и, вероятно, остановит предыдущий действие, поэтому вы не видите, как он движется.

Покажите больше кода о том, как вы создаете своего основного проигрывателя и как вы добавляете его в сцену / слой.

person giorashc    schedule 05.06.2012