- DXライブラリ 総合スレッド その9
128 :名前は開発中のものです。[sage]:2011/07/21(木) 13:26:00.60 ID:aFVdxxKm - >>124
すこし、外れてるかもしれんが その言い方だと「ゲームにクイックソートなどいらぬ、バブルソートで十分だ」 って感じに聞き取れるぞ。 早く、正確な処理にはそれなりに面倒な処理が必要なんだよ 速さだけを追求するなら、短冊で判定すればいい、 距離を正確にだして、判定したいというなら、円での判定もある より正確に、回転した長方形等を判定し、ある程度の速さを 全ての物体との当たり判定をしなくてもよい方法 当たり判定の質、量に応じて処理は選んで使うものだよ 例えば、画面上ある全ての弾が互いに干渉する弾幕ゲームなんてものを考えると 弾の数を制限するか、より早いロジックを考えるかって話になる 弾幕ゲームで100個以下の弾とか、2^nオーダー処理でやるほうが馬鹿だろ
|
- DXライブラリ 総合スレッド その9
138 :名前は開発中のものです。[sage]:2011/07/21(木) 16:24:48.14 ID:aFVdxxKm - >>129
手間がかかる分、利点はあるよ 敵の撃った弾が、自機にしか当たらないような状況ならあまり意味がないけどね 全部が全部に当たるなら、nLog2nぐらいに抑えることはできる。 n^2で計算するより、より多くの当たり判定を16msで可能になるわけだ。 ただ、イニシャルコストというべきものは、コードの煩雑さだけでなく 準備するデータにも多くかかるので、処理の対象が少ないときに 逆転することも当然ある。 まぁ、使うとするなら、弾幕シューティングとかではなくて リアルタイム物理演算とかになるわけだが 画面の外を含めて、設定したフィールドに千数百のオブジェクトがあって 互いに干渉するような場面を想定するなら非常に有効な手段になる。 逆に画面に数千の弾があっても主人公にしか当たらないというなら 導入する意味はまったくない。
|
- DXライブラリ 総合スレッド その9
144 :名前は開発中のものです。[sage]:2011/07/21(木) 17:39:25.89 ID:aFVdxxKm - >>139
1,000対1,000だと1,000,000回の判定が必要だよ 俺の環境だと if (a < g & c > e & b < h & d > f) { // 何もしない } っていう処理を1,000,000回に平均6.1msかかるのだが n~2オーダーの処理を馬鹿にしすぎてないか? a += 1; って処理でも1,000,000回だと平均3.5ms必要だ。 平均値なのはCPUの状態で1ms以下のときもあるから
|
- DXライブラリ 総合スレッド その9
188 :名前は開発中のものです。[sage]:2011/07/21(木) 21:13:40.19 ID:aFVdxxKm - >>147
空間分割を取り入れてる時点で趣旨が変わってるよ 空間分割が総当りと比較して面倒じゃないとはいわんよな 面倒な方法を取り入れる利点があるじゃないか?
|