ページ 11

ボスを無敵にするやり方

Posted: 2009年7月13日(月) 04:11
by kai
龍神録改造のボスについて質問です。
弾幕を放ってる最中はボスを無敵にして(東方の深弾幕結界みたいに)
タイムがきれるまで次の弾幕に移行しないようにしたいのですが
やり方が分からず困ってます。
void boss_shot_bulletHxxx(){
}
の中に何を付け加えたら可能なのでしょうか?
アドバイスお願いします。

Re:ボスを無敵にするやり方

Posted: 2009年7月13日(月) 12:18
by TRUTH
初めましてーまだ見習いのTRUTHです。

BOSSを無敵にする方法ですが、やり方だけ書くと
どう探っていけば分からないと思うので簡単な説明も書いておきますね。


out.cpp(ショット判定)の自機ショット判定を見れば分かりますが
//ボスが出現していて、描画しないフラグがオフで、ショット中なら
            if(boss.flag==1 && boss.graph_flag==0 && boss.state==2){
                if(out_judge_cshot_boss(i)){
                    cshot.flag=0;
                    hit_boss(cshot.power);

という部分がありますよね?boss.graph_flag==0という条件があります。
描画しないフラグとありますが、これを使うと簡単だと思います。


ボス弾幕計算のところでboss.graph_frag=1と書くだけで、無敵判定のような状態になりますが、
50章のホーミングショットをしてしまうと弾がボスに張り付いてしまうので

//一番近い敵を探して角度をセットする
void calc_homing(int k){
	(略)
	//近い敵が見つかったら、あるいはボスがいて、HPがあるときは角度をセット
	if(num!=-1 || boss.flag==1 && boss.hp>0){

のif(num!=-1 || boss.flag==1 && boss.hp>0)の条件に
boss.graph_flagが0ならばという条件を加えるだけでホーミングもキャンセルされて
簡易無敵状態になるはずです。

Re:ボスを無敵にするやり方

Posted: 2009年7月13日(月) 22:30
by kai
とても丁寧で分かりやすい返答ありがとうございます!
ずっと、boss.flagをいじっていたので、困ってましたが
boss.graph_fragを使うことは思いつかなかったです。
TRUTHさんのおかげで無事に無敵化することができました。
ありがとうございました!

Re:ボスを無敵にするやり方

Posted: 2009年7月15日(水) 01:10
by kai
ちょっと問題があったのでまたアドバイスをお願いします。
int t=boss_shot.cnt,i;

boss.graph_flag=1;
if(t >= 840){//14秒立ったあと
	boss.graph_flag=0;//描画しないフラグがオフ
}
これをvoid boss_shot_bulletHxxx()の中につけたしたのですが、
なぜかこの場合、ボスが待機中はホーミングショットをうつと
弾がボスに張り付いてしまいました。(この弾幕以後)
これも張りつかないようにしたいのですがどうしたらいいでしょうか?

Re:ボスを無敵にするやり方

Posted: 2009年7月15日(水) 11:25
by TRUTH
上で回答したときに改造した龍神録に
同じコードを組み込んでみましたが、ホーミング弾が張り付くことはないですね・・・


上で回答した時のcalc_homing内のifは同じ用な条件をつけられていますか?
自分のは以下のように書いていますので見比べてみてください。

//近い敵が見つかったら、あるいはボスがいて、HPがあるときは角度をセット
if(num!=-1 || boss.flag==1 && boss.hp>0 && boss.graph_flag==0){

Re:ボスを無敵にするやり方

Posted: 2009年7月15日(水) 16:55
by kai
あれ!!?
デバッグし直したら
いつの間にかちゃんと直ってました。
なんかどっかで自分がプログラムミスしてたのが原因でした。

TRUTHさん、
色々とありがとうございます。
おかげで実装できました。感謝です!