18章で少し質問です

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

18章で少し質問です

#1

投稿記事 by mi_l » 13年前

18章のout.cppに書いてある

コード:

 if(cshot[i].spd>r){
                        //1フレーム前にいた位置を格納する
                        double pre_x=cshot[i].x+cos(cshot[i].angle+PI)*cshot[i].spd;
                        double pre_y=cshot[i].y+sin(cshot[i].angle+PI)*cshot[i].spd;
                        double px,py;
                        for(j=0;j<cshot[i].spd/r;j++){//進んだ分÷当たり判定分ループ
                                px=pre_x-enemy[s].x;
                                py=pre_y-enemy[s].y;
                                if(px*px+py*py<r*r)
                                        return 1;
                                pre_x+=cos(cshot[i].angle)*r;
                                pre_y+=sin(cshot[i].angle)*r;
                        }
                }
とありますがこれは何をどう意味してるんですか?
ここの部分を消して実行しても変わらないのですが(しっかり敵は消える)中間ってなんのことですか?

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

Re: 18章で少し質問です

#2

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

弾の移動速度が当たり判定の半径を超えていたら、移動速度を当たり判定の半径で割って当たり判定の間を補完して弾がすり抜けるのを防止しています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 18章で少し質問です

#3

投稿記事 by Dixq (管理人) » 13年前

弾の速度を超高速にして試してみて下さい。
弾の速さを30とかにしていると、あたり判定が5位の物体ではすり抜ける可能性が高いです。

mi_l

Re: 18章で少し質問です

#4

投稿記事 by mi_l » 13年前

遅くなりましたがありがとうございます!

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

Re: 18章で少し質問です

#5

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

mi_l さんが書きました:遅くなりましたがありがとうございます!
ちゃんと問題を実際に数値を変えて確認されたのでしょうか?
分かった気になっているという事はありませんか。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

mi_l

Re: 18章で少し質問です

#6

投稿記事 by mi_l » 13年前

指摘されたとおり弾のスピードを100に変え、質問にあるコードをコメントにしたところすり抜けることがわかりました。

閉鎖

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