Cocos2dでAccelerometerを有効化
タッチと同じ感じでいけるかと思いきや詰まったので書いておく。
環境
Tool | Version |
---|---|
XCode | 4.6.1 |
Cocos2d | v2.1-rc1 |
コード
UIAccelerometerDelegateを実装する必要があるので宣言。
Sample : CCLayer <UIAccelerometerDelegate> {
}
タッチと同じようにCCLayerを継承したシーンでAccelerometerを有効化。
// initとかに self.accelerometerEnabled = YES;
メソッドをオーバーライド。
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration { CCLOG(@"呼んだ?"); }
なんか読んでくれない。で調べたらiOSの方のメソッドを呼んで上げる必要があるようだ。
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:1 / 60]; [[UIAccelerometer sharedAccelerometer] setDelegate:self]; // [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
これで呼んでくれるようになった。setIdleTimerDisableはスリープを防ぐためのもの。今回は必要ないのでコメントアウトしてます。
画面遷移したら必要もないので外しておきます。
- (void)onExit { [[UIAccelerometer sharedAccelerometer] setDelegate:nil]; // [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; [super onExit]; }
そんな感じで。