2011-08-03 92 views
0

我完成了我的游戏(cocos2d),但是当我做一个存档(从xcode产品 - >存档),然后点击共享(获取game.api),然后把它放入itunes并同步到我的iphone它看起来没有工作的加速度计我在5个设备上测试了游戏,并且它没有工作,船总是在固定的位置,它并没有移动,但是如果我点击构建并从xcode去正常工作在所有的开发设备我用下面的代码:cocos2d +加速度计问题

在init里面

- (id)init 
{ 
    if ((self = [super init])) 
    { 
    self.isAccelerometerEnabled = YES; 
    [self scheduleUpdate]; 
} 

加速度handeler:

- (void)accelerometer:(UIAccelerometer *)accelerometer 
    didAccelerate:(UIAcceleration *)acceleration { 

#define kFilteringFactor 0.1 
UIAccelerationValue rollingX, rollingY, rollingZ; 

rollingX = (acceleration.x * kFilteringFactor) + 
    (rollingX * (1.0 - kFilteringFactor));  
rollingY = (acceleration.y * kFilteringFactor) + 
    (rollingY * (1.0 - kFilteringFactor));  
rollingZ = (acceleration.z * kFilteringFactor) + 
    (rollingZ * (1.0 - kFilteringFactor)); 

float accelX = acceleration.x - rollingX; 

CGSize winSize = [CCDirector sharedDirector].winSize; 

#define kRestAccelX 0.6 
#define kShipMaxPointsPerSec (winSize.height*0.5) 
#define kMaxDiffX 0.2 

float accelDiffX = kRestAccelX - ABS(accelX); 
float accelFractionX = accelDiffX/kMaxDiffX; 
float pointsPerSecX = kShipMaxPointsPerSec * accelFractionX; 

_shipPointsPerSecY = pointsPerSecX; 

} 

船位置:

- (void)updateShipPos:(ccTime)dt { 

    CGSize winSize = [CCDirector sharedDirector].winSize; 

    float maxY = winSize.height - _ship.contentSize.height/2; 
    float minY = _ship.contentSize.height/2; 
    float newY ; 
    (isYAxisInverted) ? newY = _ship.position.y + (-_shipPointsPerSecY * dt) : newY = _ship.position.y + (_shipPointsPerSecY * dt); 
    newY = MIN(MAX(newY, minY), maxY); 
    _ship.position = ccp(_ship.position.x, newY); 

} 

和在更新:

- (void)update:(ccTime)dt { 
... 
    [self updateShipPos:dt]; 
...} 

回答

1

的解决方案是替代:

UIAccelerationValue rollingX;

通过

UIAccelerationValue rollingX = 0,rollingY = 0,rollingZ = 0;