龍神録26章を改造したら当たり判定が無くなってしまった……

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
COFE
記事: 97
登録日時: 14年前

龍神録26章を改造したら当たり判定が無くなってしまった……

#1

投稿記事 by COFE » 14年前

龍神録の館をひと通り読み、前回の質問でボスを簡単に動かす関数まで作っていただきました

なので、自分なりに弾幕作ったりしてひとつのゲームになるようにしようとしているのですが、ある時からbossのshot(boss_shot.bullet[]に登録される弾)の当たり判定が無くなってしまいました
しかしenemyのshot[].bullet[]の当たり判定はあります
ベースはproject.zipの26章で、当たり判定を司るout.cppやmain関数から呼び出すout_main関数は全くいじらずに解凍したものそのまま使用しています

そんなのもう一回26章改造して作れよw、と思われるかもしれませんがなんかこのままでは気持ち悪いです
完全に自分語りになりますが将来プログラマーになりたいです、なのにバグが出たからってdixqさんの作った雛形でまたコピってやるようではなんというか勉強にならないような気がします
なのでどうしても当たり判定が働かない理由が知りたいです
前にsoftyaさんが教えてくれたAllocConsole関数とか使ってバグの原因を探ってみたのですが、全然分かりません
何故動かないかのヒントか何かいただけないでしょうか
よろしくお願いします
添付ファイル
outが働かないproject.rar
(27.73 KiB) ダウンロード数: 120 回

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 龍神録26章を改造したら当たり判定が無くなってしまった……

#2

投稿記事 by softya(ソフト屋) » 14年前

少なくとも、ボスショットの当たり判定の確認用としては取得している情報が余りにも少ないです。
当たり判定関数の中にまで踏み込んで当たり判定の処理の数値を確認すべきだと思いますけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

COFE
記事: 97
登録日時: 14年前

Re: 龍神録26章を改造したら当たり判定が無くなってしまった……

#3

投稿記事 by COFE » 14年前

ああ、すいません
別に数値の流れを観察したのはboss_shot.flagだけでなく、outの方でreturn 1になっているかとか他のことも色々調べました
少なすぎるというか、いろいろ観察した結果後調べてないのはコレしか無いよなと思ってboss_shot.flagを一番最後に調べただけです

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 龍神録26章を改造したら当たり判定が無くなってしまった……

#4

投稿記事 by softya(ソフト屋) » 14年前

COFE さんが書きました:ああ、すいません
別に数値の流れを観察したのはboss_shot.flagだけでなく、outの方でreturn 1になっているかとか他のことも色々調べました
少なすぎるというか、いろいろ観察した結果後調べてないのはコレしか無いよなと思ってboss_shot.flagを一番最後に調べただけです
当たり判定の奥深い部分で当たりをはじく前後の情報を取得してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

COFE
記事: 97
登録日時: 14年前

Re: 龍神録26章を改造したら当たり判定が無くなってしまった……

#5

投稿記事 by COFE » 14年前

どうやらboss_shot.flag==1の時は当たり判定を実際に計算するout_judge関数が呼び出せてないようです
もう少し色々調べてみます

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 龍神録26章を改造したら当たり判定が無くなってしまった……

#6

投稿記事 by softya(ソフト屋) » 14年前

こういうバグは、ちゃんと動作している部分からだんだん奥深い部分を確認していてって何処で呼び出しが無くなるとかif文の何処ではじかれているか確認すると良いです。
場合によってはif文を単一条件に分解して調べたりしてみても良いでしょう。
参考。こんな感じで。
int cond1 = x1 < x2;
int cond2 = y1 < y2;
printf( "条件:%s %s\n", cond1?"TRUE","FALSE", cond2?"TRUE","FALSE" );
if( cont1 && cond2 ) {
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

COFE
記事: 97
登録日時: 14年前

Re: 龍神録26章を改造したら当たり判定が無くなってしまった……

#7

投稿記事 by COFE » 14年前

原因が分かりました
オリジナルの弾幕作るときにboss_shot.cppの21行目boss_shot.bullet.cnt++;をコメントアウトしていたのが原因でした
しかもオリジナルの弾幕はコレがコメントアウトされてようがなかろうがちゃんと動作するという代物で……
バグなんて原因が分かってみると、なーんだって感じですね
softyaさんありがとうございました

閉鎖

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