今まではOpenGLESオンリーだったのだが、
iPadらしく動くことを考えるとCALayerだとかUIViewだとかを使うほうがいいような気がして来た。
簡単にスレッドを意識せずにアニメを起動することもできる。
CALayerは便利だ。
パフォーマンスはまだ調べていないが、
きっと普通にゲームなんて組めるレベルのパフォーマンスは出ないだろうと思う。
ただ、ビューアとかを作るのであれば、CATransactionを使ってスレッド化したルーチンからページの先読みをさせたりも出来るし、コーディングのレベルはかなり落とせると思う。
CALayerは当り判定も出来るのだが、その前にポイントの変換しておかないといけない。
以下の例では、
touchはtouchesBegan のeventから画面上のタッチされた位置を設定している。
その後、BottomBar上にaddSubLayerしたLayerへの当り判定をするためにbarTouchPointへ変換している。
UITouch *touch = [event.allTouches anyObject];
touchBeganPoint = [touch locationInView:self];
// BottomBarレイヤー用に変換
CGPoint barTouchPoint = [self.layer convertPoint:touchBeganPoint toLayer:BottomBar];
実際の当り判定はこんな感じで、BottomBarにaddSublayerしたDoorへの当り判定が出来る
if([Door hitTest:barTouchPoint] ){
// 当たったよ
}
0 件のコメント:
コメントを投稿