ページ 11

18章で少し質問です

Posted: 2012年9月18日(火) 23:48
by mi_l
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;
                        }
                }
とありますがこれは何をどう意味してるんですか?
ここの部分を消して実行しても変わらないのですが(しっかり敵は消える)中間ってなんのことですか?

Re: 18章で少し質問です

Posted: 2012年9月19日(水) 11:13
by softya(ソフト屋)
弾の移動速度が当たり判定の半径を超えていたら、移動速度を当たり判定の半径で割って当たり判定の間を補完して弾がすり抜けるのを防止しています。

Re: 18章で少し質問です

Posted: 2012年9月20日(木) 00:24
by Dixq (管理人)
弾の速度を超高速にして試してみて下さい。
弾の速さを30とかにしていると、あたり判定が5位の物体ではすり抜ける可能性が高いです。

Re: 18章で少し質問です

Posted: 2012年9月22日(土) 18:10
by mi_l
遅くなりましたがありがとうございます!

Re: 18章で少し質問です

Posted: 2012年9月22日(土) 18:12
by softya(ソフト屋)
mi_l さんが書きました:遅くなりましたがありがとうございます!
ちゃんと問題を実際に数値を変えて確認されたのでしょうか?
分かった気になっているという事はありませんか。

Re: 18章で少し質問です

Posted: 2012年9月22日(土) 18:29
by mi_l
指摘されたとおり弾のスピードを100に変え、質問にあるコードをコメントにしたところすり抜けることがわかりました。