2010-07-18 7 views
0

나는 가속도계를 사용하여 아이폰 게임을하고있다. 아직 Apple 개발자 프로그램 사용자가 없으므로 내 장치에서 테스트 할 수 없으므로 화면에서 탭하는 위치에 따라 가속도계 값을 게임에 제공하려고합니다.액셀러레이터 입력을 화면 터치 컨트롤로 바꾸기

내가 뭘하려고 했는가 : 중간 지점에서 화면 중간을 보려고 시도했지만 중간 지점에서 탭의 오프셋은 가속도계의 XY가됩니다. 나는이 값이 1을 넘을 것이고 필요한 값은 1에서 -1까지이므로 작업을하기 위해 많은 노력을 기울였습니다. 나는 종종 가까이에 있었지만 일할 수 없었다. 중간 점까지의 거리가 100 개 이상의 경우

또한, 당신은, SQRT (DX DX + DY DY), 다음이 100의 거리가 대신 걸릴 것 알고 (, 한계가있을 싶어 . 193이나 뭐 같은

여기 내 코드는 지금까지의 :

- (void) ccTouchesMoved: (NSSet *)touches withEvent: (UIEvent *)event 
{ 
    if(IS_SIMULATOR) 
    { 
     for(UITouch *touch in touches) { 
      CGPoint location = [[CCDirector sharedDirector] convertToGL: [touch locationInView: [touch view]]]; 
      CGFloat dx = location.x - middleOfScreen.x; 
      CGFloat dy = location.y - middleOfScreen.y; 
      CGFloat d = sqrtf(dx*dx+dy*dy); 
      CGFloat a = atan2(dy, dx); 
      CGFloat accX = /*acceleration value x*/ 
      CGFloat accY = /*acceleration value y*/ 

      //[mlRef setAcceleration: ccp(accX, accY)]; 
     } 
    } 
} 

내가 도와주세요, 당신은 내가 원하는 것을 이해 바랍니다 :)

또한, 사람이, 아니 내가 돈을 권장하지 전에. 집에서 사용하지 않는 iSimulate를 사용하고 싶지 않습니다. 그것. :(

답변

1

그래서 귀하의 질문은 DY에 대한 DX 160 및 240을해야하는, 그냥 최대 값으로 그들을으로 나눔? DX를 정상화하고 DY에 얼마나 정말입니다.

그렇지 않으면, 단지 NSLog 또는 printf와 모든 값 그냥 값을 추적합니다. 여전히 파악할 수없는 경우 로깅 코드를 게시하면 한 번의 터치로 출력됩니다.

관련 문제