2012-03-31 4 views
1

이 코드는 가속도계 방법에 사용됩니다.다음 코드에서 어떤 현상이 발생합니까?

CGFP 변수 인 playerVelocity를 사용합니다.

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 
    //controls how quickly the velocity decelerates 
    float deceleration = 0.4f; 

    //determines how sensitive the accelerometer reacts 
    float sensitivity = 6.0f; 

    //how fast the velocity can be at most 
    float maxVelocity = 100; 

    playerVelocity.x = playerVelocity.x *deceleration + acceleration.x *sensitivity; 


    if (playerVelocity.x < -maxVelocity) 
    { 
     playerVelocity.x = -maxVelocity; 
    } 
    else if (playerVelocity.x > maxVelocity) 
    { 
     playerVelocity.x = maxVelocity; 
    } 
} 

는 지금은 playerVelocity 변수가 CGPoint 그래서 나는 X, Y 그래프로 상상 것을 알고있다. playerVelocity 변수가 쉬고있는 곳이라면 (150,0이라고하자), 가속도계 입력이 수신 될 때마다 (즉, iPhone이 기울어 져있을 때) 0.4로 어떤 좌표를 곱하고 그 다음으로는 accelerometer.x을 곱한 것으로 가정합니다. 6.0 ~ playerVelocity 변수입니다. 이 올바른지? 나중에 다른 방법에

, 이것은 내가에 대한 혼란 스러워요 것은 바로 여기에 무대 뒤에서 무슨 일이 일어나고있다

CGPoint pos = playerObject.position; 
pos.x+= playerVelocity.x; 
playerObject.position = pos; 

를 통해 내 다른 객체의 위치에 추가됩니다. 위의 가정이 맞습니까?

playerVelocity가 150,0이고 0.4가 곱해질 때 playerVelocity 변수의 X 좌표가 점차 감소합니다 (예 : 150,0, 145,0, 130,0 등)?

내가 이것을 알아 내면 나는 내 playerObject이 어떻게 움직이는 지 알게 될 것이다.

답변

1

가속도계를 통해 수신 된 가속도에서 현재 이동중인 방향과 반대 방향으로 움직이는 일정한 감속도 (.4)가있는 것으로 보입니다.이 가속도계에는 상수가 곱해집니다. 이 값은 현재 속도에 추가됩니다. 따라서 기본적으로 가속도계의 가속 - 일정한 감속도를 각 계산에 대한 현재 속도와 가산합니다.

+0

나는 본다. 그래서 움직임은 기본적으로 위치에 속도를 추가하는 다른 방법 (업데이트 방법)에서 발생합니다. 알겠습니다. 고맙습니다. –

관련 문제