読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【BeeCluster】ステージ5ボス オオスズメバチ

BeeCluster cocos2d

これまでのステージにも登場してきましたスズメバチが5面のボスとなります。

グルグル回りながら四方八方から弾を撃ってきますので避けるのが大変です。
やっつけるコツは穴から浮上してきて回り出すところを狙いできるだけ回り出す前に撃破する事です。次から次へと穴の中からスズメバチが浮上してきますので、とにかく画面内のスズメバチの数を少ない状態にキープしたいところです。
穴から浮上して来るところはcocos2dのCCTintToとCCScaleToアクションを使って表現しています。浮上したあとはこちらのポストで解説しているupdateメソッド内でCCActionを使わずにpositionプロパティを直接操作してスプライトを動かしています。
なお、今回は動きだしが滑らかになるようにだんだん速度が増して行くように改良しています。
また、回転半径が小さくなりすぎないよう制限を設けました。

- (void)updatePosition:(ccTime)delta
{
    _angle += delta * _angularRate;
    if (_angularRate < _maxAngularRate) {
        _angularRate += 3.0;
    }
    if (_radius >= 100) {
        _radius -= delta * _radiusRate; // ある程度以上回転半径は小さくならない
    }
    
    float x = _radius * cos(-CC_DEGREES_TO_RADIANS(_angle));
    float y = _radius * sin(-CC_DEGREES_TO_RADIANS(_angle));
    
    CGPoint position = ccpAdd(_pivot, ccp(x, y)); //画面中心を軸に回転
    
    self.position = position;
    self.rotation = _angle+90.0+90.0;
}