電話を左右に傾けてキャラクターを回転させたいのですが、DidMoveToView が呼び出されたときに一度だけ回転します。コードで何を変更する必要がありますか?
self.manager = [[CMMotionManager alloc] init];
if ([self.manager isAccelerometerAvailable] == YES) {
[self.manager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init]
withHandler:^(CMAccelerometerData *data, NSError *error)
{
float destX = 0.0, destY = 0.0;
float currentX = _character.position.x;
float currentY = _character.position.y;
BOOL shouldMoveToRight = NO;
BOOL shouldMoveToLeft = NO;
if(data.acceleration.y < -0.25) { // tilting the device to the right
destX = currentX + (data.acceleration.x * kPlayerSpeed);
destY = currentY;
shouldMoveToRight = YES;
shouldMoveToLeft = NO;
} else if (data.acceleration.y > 0.25) { // tilting the device to the left
destX = currentX + (data.acceleration.x * kPlayerSpeed);
destY = currentY;
shouldMoveToRight = NO;
shouldMoveToLeft = YES;
}
if(shouldMoveToRight) {
SKAction *moveAction = [SKAction moveTo:CGPointMake(destX, destY) duration:1];
[_character runAction:moveAction];
SKAction *rotateAction = [SKAction rotateToAngle:M_PI duration:1];
[_character runAction:rotateAction];
}
if (shouldMoveToLeft) {
SKAction *moveAction = [SKAction moveTo:CGPointMake(destX, destY) duration:1];
[_character runAction:moveAction];
SKAction *rotateAction = [SKAction rotateToAngle:-M_PI duration:1];
[_character runAction:rotateAction];
}
}];
}