2011-09-19 6 views
0

Google 또는 2 후, 사용자가있는 현재 위치를 저장하기 위해이 코드를 작성하여 (교정 할 수 있도록) NSUserDefaults에 저장합니다. 현재 이곳에UIAccelerometer가 도움이됩니까?

[[NSUserDefaults standardUserDefaults] setFloat:0 forKey:@"X-Calibrate"]; 
    [[NSUserDefaults standardUserDefaults] setFloat:0 forKey:@"Y-Calibrate"]; 

내가 도움의 약간의 비트를 필요로하는 곳에이다 :

//Add code for calibrating accelerometer 
     UIAcceleration *acceleration; 
     float accelX = (acceleration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]); 
     float accelY = (acceleration.y - [[NSUserDefaults standardUserDefaults] floatForKey:@"Y-Calibrate"]); 
     [[NSUserDefaults standardUserDefaults] setFloat:accelX forKey:@"X-Calibrate"]; 
     [[NSUserDefaults standardUserDefaults] setFloat:accelY forKey:@"Y-Calibrate"]; 

내가 할 교정을 재설정하려면 : 이것은 내 설정보기입니다. NSUserDefaults에 이러한 값이 생겼습니다. 교정을 '완전히'구현할 수 있도록 다음 코드에 어떻게 적용할까요?

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceration { 
    AccelPoint.x += (acceration.x*50); 
    if (AccelPoint.x < 0) { 
     AccelPoint.x = 320; 
    } 
    if (AccelPoint.x > 320) { 
     AccelPoint.x = 0; 
    } 
    playerSpeed += 0.066; 
    AccelPoint.y += playerSpeed; 
    Square.center = AccelPoint; 
} 

이것은 변수의 일부이며, 그들이 정의하는 방법 : 다음 코드는 현재 가속도계입니다

CGPoint AccelPoint; 
float playerSpeed; 

감사합니다!

또한 가속도계 코드에 대한 빠른 사이트 질문에 if-elseif를 사용해야합니까? 그게 더 효율적일까요, 아니면 if-if에 두어야합니까?

EDIT1 : 내 코드에서

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceration { 
    float accelX = (acceration.x - [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]); 
    float accelY = (acceration.y - [[NSUserDefaults standardUserDefaults] floatForKey:@"Y-Calibrate"]); 
    AccelPoint.x += (accelX*50); 
    if (AccelPoint.x < 0) { 
     AccelPoint.x = 320; 
    } 
    if (AccelPoint.x > 320) { 
     AccelPoint.x = 0; 
    } 
    playerSpeed += 0.066; 

    AccelPoint.y += playerSpeed; 

    Square.center = AccelPoint; 

} 

, 나는 accelY를 사용하고 있지 않다. 내 코드에 어떻게 적용해야합니까? 코드를 약간 깔끔하게 정리했습니다.

답변

1

회원님이 있지만 액세스 할 그냥, 당신이 저장하고있는 데이터를 사용하여 정확히 원하는 방법을 잘 :

float xCal = [[NSUserDefaults standardUserDefaults] floatForKey:@"X-Calibrate"]; 
float yCal = [[NSUserDefaults standardUserDefaults] floatForKey:@"Y-Calibrate"]; 

편집 :

그래서 귀하의 의견에 따라, 어쩌면이 같은 시도 .

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *) acceration { 
    float accelX = (acceration.x - xCal); 
    float accelY = (acceration.y - yCal); 
    AccelPoint.x += (accelX*50); 
    if (AccelPoint.x < 0) { 
     AccelPoint.x = 320; 
    } 
    if (AccelPoint.x > 320) { 
     AccelPoint.x = 0; 
    } 
    playerSpeed += 0.066; 
    AccelPoint.y += playerSpeed; 
    Square.center = AccelPoint; 
} 
+0

저는 그 값을 읽고 UIAccelerometer에 적용하여 사용자가 옆에서 놀고 있다고 말하면 게임 가속도계는 사용자가 정상적으로 들고있는 것처럼 작동합니다. –

+0

그 코드에서는 accelY를 사용하지 않습니다. 내 코드에 어떻게 적용해야합니까? 또한 원래 게시물에서 내 Edit1을 확인하고 조금 더 명확하게하기 위해 코드를 정리했습니다. –

+0

여전히 accelY 문제에 대한 도움이 필요합니다! –

관련 문제