2011-08-27 2 views
2

Je suis en train de faire une application simple en utilisant gyroscopique, où un personnage se déplace en fonction de la rotation de l'iPad 1.iPad 1 Gyroscope: roulis, tangage, lacet reste zéro

Mon code ne fonctionne pas, alors J'ai testé pour voir les valeurs de raw, pitch, lacet, et ils restent effectivement comme zéro mais je déplace l'appareil. Je suis sûr que l'iPad 1 prend en charge CMMotionManager, donc je ne suis pas sûr de ce qui le cause ... Mon code est le suivant

- (id) init{ 
if((self=[super init])){ 
    self.isTouchEnabled = YES; 
    winSize = [[CCDirector sharedDirector] winSize]; 
    [self createRabbitSprite]; 

    self.motionManager = [[CMMotionManager alloc] init]; 
    motionManager.deviceMotionUpdateInterval = 1.0/60.0; 
    if(motionManager.isDeviceMotionAvailable){ 
     [motionManager startDeviceMotionUpdates]; 
    } 
    [self scheduleUpdate]; 
    //[self registerWithTouchDispatcher]; 
} 
return self; 

}

-(void)update:(ccTime)delta{ 
CMDeviceMotion *currentDeviceMotion = motionManager.deviceMotion; 
CMAttitude *currentAttitude = currentDeviceMotion.attitude; 

if(referenceFrame){ 
    [currentAttitude multiplyByInverseOfAttitude:referenceFrame]; 
} 

float roll = currentAttitude.roll; 
float pitch = currentAttitude.pitch; 
float yaw = currentAttitude.yaw; 

NSLog(@"%.2f and %.2f and %.2f",roll,pitch,yaw); 

rabbit.rotation = CC_RADIANS_TO_DEGREES(yaw); 

}

S'il vous plaît aider moi sortir .. et merci à l'avance.

(modifier) ​​

Apparemment, motionManager.isDeviceMotionAvailable retourne FAUX ... qui doit vouloir dire que l'iPad 1 ne supporte pas CoreMotion ??? Serait-ce quelque chose avec le réglage?

+0

Vous pouvez vous référer à cette réponse: http://stackoverflow.com/a/10145614/1336105 –

Répondre

4

L'iPad Première génération prend en charge CMMotionManager (car il a un accéléromètre), mais ne renverra aucune donnée gyroscopique - il n'a pas de gyroscope! Vous devez vérifier la propriété gyroAvailable d'une instance CMMotionManager.

Questions connexes