2012-04-29 12 views
0

良い午後!Cocos2DとiPhoneの加速度計

今日、私はゲームを開発し始めました。問題が発生しました。だから、私はゲームを開発した経験がないと言いたいと思います。

私はレイヤー内にCCSpriteを持っていて、これをマージン(上、下、 左右)。

最小Xは、加速度計を使用してX軸で8にする必要があります。最小Yは-1(Y軸)またはZ軸で0で、最大値0(in Y軸)または-1(Z軸)に設定します。

これを知って、私は最小と最大の間隔と加速度計の値の範囲を使用してこれをしようとしましたが、私はこれを縦に働かせていません(iPhoneのY軸)。その後、Webでコードを完了しましたが、オブジェクトを後ろに移動したいときには機能しません(オブジェクトのみが移動します)。

誰かがこれを修正する方法を知っていましたか?

私の実際のコード:

- (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; 
} 
関連する問題