2012-06-05 3 views
0

하나의 오브젝트가 실행중인 cocos2d에서 하나의 게임을 만들고 싶습니다.오브젝트가 가속도계에서 움직입니다

장치 가속도계의 왼쪽과 오른쪽에서이 물체를 이동하고 싶습니다. 나는 가속도계의 가치를 얻고 있으며 객체의 위치를 ​​업데이트하고있다. 심지어 나는 LOG에서 새로운 위치를 볼 수 있습니다. 그러나 그 대상은 그것의 possion에서 움직이지 않고있다. 여기에 내가 응용 프로그램에서 작성된 코드입니다.

- (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); 
} 

내가 직접 위치를 설정하여 조치를 사용하여 두 방법을 시도해야합니다.

복용량이 문제가 발생하는 이유 또는 가속도계가 작동하는 데 필요한 설정을 알 수 있습니다.

그러한 종류의 링크를 제공하십시오.

답변

0

대신하면 MoveTo의 MoveBy를 사용해보십시오 :

- (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]; 
} 
0
나는이 방법은 (내가 가속도계를 초기화적인 Cocos2D 방법을 기억 해달라고) 초에 10 번처럼 불리는 가속도계에서 작업을 실행하지 않도록 조언합니다

runAction 메서드가 초당 10 회 호출되고 아마도 이전 동작을 멈추게하여 움직이지 않는 이유가됩니다.

주요 플레이어를 만드는 방법과 장면/레이어에 추가하는 방법에 관한 코드 더보기

관련 문제