animateWithDurationで敵が迫り来る感じを出す
前回までに
主人公を表示させて動かしたり、ビームを出すことなどをしてきましたが、
今日は敵機を襲来させてみました。
まだ敵に対してダメージを与える機能は実装できてませんが、
ビームと敵機の衝突判定部分を作ってみました。
当たってはいるけどダメージがない感じです。
衝突したビームは消滅するようにしてみました。
敵機については主人公やビームと同じくそれぞれオブジェクトとして作成し、
時間推進演算メソッドを定義し、そのメソッドの中で
ビームや主人公との衝突検知や
機体の生成と同時に進行方向へのアニメーション開始も実行しています。
この時間推進演算メソッドではゲームクラス側で
一定間隔で定期的に呼び出されるようにしていますので
その時間間隔における敵機の進行幅が向かって来るビームの進行幅より
大きければうまく衝突が検知できないので少し工夫が必要でした。
//敵機のアニメーションの開始 [UIView animateWithDuration:gTime delay:0.0 options:UIViewAnimationOptionCurveLinear animations:^{ self.point.center = CGPointMake(self.point.x, self.point.y+[UIScreen mainScreen].bounds.height); } completion:^(BOOL finished){ [self die]; }];
動画をアップしましたけど敵が迫り来る様子が少し出せたかなーと思います。
注意したのは時間推進演算メソッドを呼び出す駆動エンジンとしてNSTimerを用いた部分でした。
このNSTimerオブジェクトは定期的に任意のメソッドを呼び出すものですが、
その呼出し間隔は0.5秒が推奨されていて
それより短い間隔で呼び出す場合は別の仕組みを考えなければならないようです。
これについては次回書こうと思います。