ボスを無敵にするやり方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kai

ボスを無敵にするやり方

#1

投稿記事 by kai » 16年前

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

TRUTH

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

#2

投稿記事 by TRUTH » 16年前

初めましてーまだ見習いの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ならばという条件を加えるだけでホーミングもキャンセルされて
簡易無敵状態になるはずです。

kai

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

#3

投稿記事 by kai » 16年前

とても丁寧で分かりやすい返答ありがとうございます!
ずっと、boss.flagをいじっていたので、困ってましたが
boss.graph_fragを使うことは思いつかなかったです。
TRUTHさんのおかげで無事に無敵化することができました。
ありがとうございました!

kai

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

#4

投稿記事 by kai » 16年前

ちょっと問題があったのでまたアドバイスをお願いします。
int t=boss_shot.cnt,i;

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

TRUTH

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

#5

投稿記事 by TRUTH » 16年前

上で回答したときに改造した龍神録に
同じコードを組み込んでみましたが、ホーミング弾が張り付くことはないですね・・・


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

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

kai

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

#6

投稿記事 by kai » 16年前

あれ!!?
デバッグし直したら
いつの間にかちゃんと直ってました。
なんかどっかで自分がプログラムミスしてたのが原因でした。

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

閉鎖

“C言語何でも質問掲示板” へ戻る