加速度の値に応じて 1 つのオブジェクトを動かしたいゲームを 1 つ準備しています。ゲームはランドスケープ モードです。
ゲームでは、cocos2d フレームワークを使用しており、加速度値に従ってスプライトの位置を変更しています。加速度計のコードは次のとおりです。
- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration{
static float prevX=0, prevY=0, prevZ=0;
float accelX = acceleration.x * kFilterFactor + (1- kFilterFactor)*prevX;
float accelY = acceleration.y * kFilterFactor + (1- kFilterFactor)*prevY;
float accelZ = acceleration.z * kFilterFactor + (1- kFilterFactor)*prevZ;
prevX = accelX;
prevY = accelY;
prevZ = accelZ;
NSLog(@"x:%.2f,y:%.2f,z:%.2f",accelX, accelY, accelZ);
if ( ((player.position.x + (-accelY*kSpeed)) >0 && (player.position.x + (-accelY*kSpeed))<480)||
((player.position.y + (accelX*kSpeed)) >0 && (player.position.y + (accelX*kSpeed))<320)){
player.position = ccp(player.position.x + (-accelY*kSpeed), player.position.y + (accelX*kSpeed));
}
CGPoint converted = ccp( (float)-acceleration.y, (float)acceleration.x);
// update the rotation based on the z-rotation
// the sprite will always be 'standing up'
player.rotation = (float) CC_RADIANS_TO_DEGREES( atan2f( converted.x, converted.y) + M_PI );
}
ここで、player
は CCSprite オブジェクトです。Player はデバイスの向きに従って回転しますが、デバイスの向きによって位置は変わりません。私は何を間違っていますか?ランドスケープ モードでは、x 軸は y として動作し、y 軸は x として動作しますか?