2012-04-29 3 views
0

좋은 오후!코코스 2D와 아이폰의 가속도계

오늘 게임을 개발하기 시작했고 문제가 생겼습니다. 그래서, 처음에는 게임 개발 경험이 없다고 말하고 싶습니다 ...

그래서 저는 CCSprite를 레이어에 넣었고 여백이있는 장면 (위, 아래, 아래쪽)으로 이동하고 싶습니다. , 왼쪽 및 오른쪽).

최소 X는 -8 (가속도계를 사용하는 X 축) 및 최대 8이어야합니다. 최소 Y는 -1 (Y 축) 또는 Z 축의 0이어야하며 최대 0 Y 축) 또는 -1 (Z 축).

좋아, 이걸 알고, 나는 최소 및 최대 공간과 가속도계 값 사이의 범위를 사용하여 이것을 시도했지만이 작동하지 수직 (Y 축 아이폰). 그런 다음 웹에서 완료 코드가 있지만 객체를 뒤로 이동하려는 경우에는 작동하지 않습니다 (객체 만 이동).

누군가이 문제를 해결하는 방법을 알고 있습니까?

내 실제 코드 :

- (void)updatePosition:(ccTime)dt { 
    CGSize winSize = [[CCDirector sharedDirector] winSize]; 

    float maxY = winSize.height - car.contentSize.height/2 - 20; 
    float minY = car.contentSize.height/2 + 20; 
    float newY = car.position.y + (carPointsPerSecY * dt); 
    newY = MIN(MAX(newY, minY), maxY); 

    float maxX = winSize.width - car.contentSize.width/2 - 40; 
    float minX = car.contentSize.width/2 + 40; 
    float newX = car.position.x + (carPointsPerSecX * dt); 
    newX = MIN(MAX(newX, minX), maxX); 

    car.position = ccp(newX, newY); 
}  

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { 
    float speedY = acceleration.y * 500; 
    if(carPointsPerSecY < speedY) { 
     carPointsPerSecY = MIN(carPointsPerSecY + 10, speedY); 
    } else { 
     carPointsPerSecY = MAX(carPointsPerSecY - 2, speedY); 
    } 

    float speedX = acceleration.x * 200; 
    if(carPointsPerSecX < speedX) { 
     carPointsPerSecX = MIN(carPointsPerSecX + 10, speedX); 
    } else { 
     carPointsPerSecX = MAX(carPointsPerSecX - 10, speedX); 
    } 

    NSLog(@"Acceleration: X (%f) - Y (%f) - Z (%f)", acceleration.x, acceleration.y, acceleration.z); 
} 
+0

는 당신이 가속도계를 사용할 수 있도록 않았다 ? 또한, NSLog는 가속도계가 변화하고 있음을 보여 줍니까? –

+0

예, 작동합니다. 문제는 다음과 같지 않습니다./ –

+0

carPointPerSecX/Y는 어떤 문자입니까? –

답변

0

나는 완전히 당신이 원하는 것을 이해 모르겠지만 나는이 최종 목표 당신을 도움이되기를 바랍니다 :

-(void)updatePosition:(ccTime)dt { 
    CGSize size = [[CCDirector sharedDirector] winSize]; 

    int margin = 20; 
    float speed = 15; 

    float maxX = size.width - car.contentSize.width/2 - margin; 
    float minX = car.contentSize.width/2 + margin; 
    float maxY = size.height - car.contentSize.height/2 - margin; 
    float minY = car.contentSize.height/2 + margin; 

    float newX = MIN(MAX(car.position.x + xAccel * speed, minX), maxX); 
    float newY = MIN(MAX(car.position.y + yAccel * speed, minY), maxY); 

    car.position = ccp(newX, newY); 
} 

//define in header: float xAccel, yAccel; 
- (void)accelerometer: (UIAccelerometer *)accelerometer didAccelerate: (UIAcceleration *)acceleration { 
    yAccel = acceleration.x; 
    xAccel = -acceleration.y; 
}