先月末に引き続き、GW中はcocos2dでボスの作成をしています。そのなかで、戦闘を派手にするために「エフェクト」をどうするかに四苦八苦して結構時間を取られます。この部分がゲームバランスの問題にも関わってくると思います。
ビーム
「ビーム」でやりたい動き。
ビームを出す
ビームを表現するのに凄く悩んで試行錯誤した結果。一つのスプライトを珠珠つなぎに生成してビームのように見せるのがいいのではないかと思いました。
壁に跳ね返る
これも凄く悩みました。 できたものは凄く単純なんですが、画面のサイズにビームのテクスチャが接触したら、移動で使っているCGPointクラスのxやyに「−1」を乗算していあげれば跳ね返って見えます。
当たったらダメージを受ける
これはビームのテクスチャを表現するビームクラスに以下のような当たり判定を設置します。 [c] //当たり判定 if (CGRectIntersectsRect(selfRect,playerRect)) { //Playerがダメージを受けるメソッドを呼び出す。 [Player hitAction];
[/c]
炎の壁
「炎の壁」でやりたい動き。
炎のように見えるアニメーションを施す
これは、一つクラスを準備して、その中でCCActionを使ってアニメーションさせる。 こんな感じのアニメーションです。
まずは真ん中に炎がくる
これは「Bossクラス」で、先程の「炎のクラス」を呼び出してあげる。
炎が両側へ広がる
まずは全ての炎を前もって呼び出しておいて、それを実際にアニメーションさせるタイミングを調整してあげる。 こんな感じのコードになります。 [c]
for (int i = 0; i<4; i++) { //Firewallが炎アニメーションのクラス //delaytimeでアニメーションのタイミングをづらしている。 Firewall firewall = [Firewall node]; firewall.position =ccp(+50i,-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]
デモ動画
難しいのは行動パターン(AI)です。まだ、その調整が全然できていません。 エフェクトとともにこの行動パターンもしっかり考えていきたいです。