2011-08-03 14 views
0

加速度計を使って宇宙船を動かすスペースゲームを作った。私のデバイス(iPad、iPhone)でゲームを試しても、エラーや不正な動作。App Storeにゲームをアップロードした後に加速度計が動作しない

ゲームをApp Storeにアップロードして承認されましたが、App Storeからゲームをダウンロードしたときに加速度計が動作せず、私の宇宙船が一方向に突き当っていました。

私は多くのデバイスを試しましたが、それらはすべて同じ問題を抱えています。

注:私はcocos2dとbox2dフレームワークを使用しました。

誰か助けてください。

+0

私たちのことを教えてもらえますか?ゲーム名は何ですか? – Toastor

+0

この問題が発生した後、私は有料ゲームのため利用可能日を変更してゲームをアプリストアから削除します – ouss

+0

プロジェクトを掃除してもう一度試してみてください。通常、アプリストアへのアップロードは最初から作成されるので、クリーンなプロジェクトからテストしないと、奇妙なバグがポップアップすることがあります。 – Carter

答えて

0
Use UIAccelerometerDelegate 

UIAccelerometer *accelerometer; 

In .m file 

# pragma mark To Enable Acceleromete 

self.isAccelerometerEnabled = YES; 
self.accelerometer = [UIAccelerometer sharedAccelerometer]; 
self.accelerometer.updateInterval = 0.025; 
self.accelerometer.delegate = self; 


Use these delegates methods 

#pragma Mark Accelerometer 

-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration 
{ 
     // Set up variables 
     CGSize winSize = [CCDirector sharedDirector].winSize; 

     #define kFilteringFactor 0.5 
     #define kShipMaxPointsPerSec (winSize.height*0.5)   
     #define kRestAccelX (xCallib) 
     #define kMaxDiff 0.2 
     #define kRestAccelY (yCallib) 
     #define kMaxDiffY 0.1 

     UIAccelerationValue rollingX=0; 
     float accelX; 

     // High pass filter for reducing jitter 
     rollingX = (acceleration.x * kFilteringFactor) + (rollingX * (1.0 - kFilteringFactor));  

     accelX = acceleration.x - rollingX; 

     // Calculate movement for x and y axis 
     float accelDiffX = accelX - kRestAccelX;/// 
     float accelFractionX = accelDiffX/kMaxDiff;// 
     movementX = kShipMaxPointsPerSec * accelFractionX; 


     // Thresh holds for x and y axis movement 
     willMoveX = YES; 

     if (((movementX < 45.0f) && (movementX > -45.0f))) 
      willMoveX = NO; 
} 

#pragma Mark Accelerometer Update Methods 

-(void) update:(ccTime)dt 
{ 
    CCSprite *player =(CCSprite *) [self getChildByTag:objPlayerShipTag]; 

    CGSize screenSize = [[CCDirector sharedDirector]winSize]; 

    float oldX = [player position].x; 
    float newX; 

    if (willMoveX) { 
     newX = [player position].x + (movementX * dt); 
    } else newX = oldX; 

    if ((newX > (screenSize.width -45)) || newX < 45.0f) { 
     newX = oldX; 
    } 

[player setPosition:ccp(newX,90)]; 

// ++++++++ To generate Bullet and Bomb Power +++++++ 

[self checkForCollisionWithPowersBullets]; //NEW 
[self checkForCollisionWithPowersBomb]; 

} 
+1

回答を投稿していただきありがとうございます!コードスニペットは質問に答えることができますが、説明などのようにいくつかの追加情報を追加することはまだ素晴らしいです。 – j0k

関連する問題