[cocos2d] ゲーム開発日誌part10 戦闘の際のエフェクト

  • |
[cocos2d] ゲーム開発日誌part10 戦闘の際のエフェクト
   

先月末に引き続き、GW中はcocos2dでボスの作成をしています。そのなかで、戦闘を派手にするために「エフェクト」をどうするかに四苦八苦して結構時間を取られます。この部分がゲームバランスの問題にも関わってくると思います。

ビーム

「ビーム」でやりたい動き。

ビームを出す

ビームを表現するのに凄く悩んで試行錯誤した結果。一つのスプライトを珠珠つなぎに生成してビームのように見せるのがいいのではないかと思いました。

このスプライトを使っています。
BeamBoss

壁に跳ね返る

これも凄く悩みました。
できたものは凄く単純なんですが、画面のサイズにビームのテクスチャが接触したら、移動で使っているCGPointクラスのxやyに「−1」を乗算していあげれば跳ね返って見えます。

当たったらダメージを受ける

これはビームのテクスチャを表現するビームクラスに以下のような当たり判定を設置します。
//当たり判定
    if (CGRectIntersectsRect(selfRect,playerRect)) {
        //Playerがダメージを受けるメソッドを呼び出す。
        [Player hitAction];



まだ完全が必要な感じはしますが、ビームのように見えます。
スクリーンショット 2012 05 08 21 33 59


炎の壁

「炎の壁」でやりたい動き。

炎のように見えるアニメーションを施す

これは、一つクラスを準備して、その中でCCActionを使ってアニメーションさせる。
こんな感じのアニメーションです。
Firewall

まずは真ん中に炎がくる

これは「Bossクラス」で、先程の「炎のクラス」を呼び出してあげる。

炎が両側へ広がる

まずは全ての炎を前もって呼び出しておいて、それを実際にアニメーションさせるタイミングを調整してあげる。
こんな感じのコードになります。


for (int i = 0; i<4; i++) {
//Firewallが炎アニメーションのクラス
//delaytimeでアニメーションのタイミングをづらしている。
Firewall *firewall = [Firewall node];
firewall.position =ccp(+50*i,-30);
[self addChild:firewall z:10];
[firewall actionFireWall:profile delaytime:0.1f*i];

Firewall *firewall2 = [Firewall node];
firewall2.position =ccp(-50*i,-30);
[self addChild:firewall2 z:10];
[firewall2 actionFireWall:profile delaytime:0.1f*i];

}
[/c]

そうすれば私が思っていたアニメーションに近づきました。
スクリーンショット 2012 05 08 21 36 10

デモ動画




難しいのは行動パターン(AI)です。まだ、その調整が全然できていません。
エフェクトとともにこの行動パターンもしっかり考えていきたいです。

Related Posts Plugin for WordPress, Blogger...