ゴミ箱.net

汚物は消毒

ゲーム製作日記6 衝突判定の続きの続き

衝突判定を実装するにあたり、いずれにしろ領域の種類ごとに衝突判定を書く処理は避けられないわけだが…果たして何種類書けばいいんだろうか。
図形がn種類あれば、n(n+1)/2通りの判定処理が必要なわけで。長方形、円、直線、多角形、…といくらでも種類が考えられるぞ?

結論から言うと、全部多角形として処理すれば1種類でおk。
長方形は言わずもがな。
直線は幅が非常に狭く、かつ傾いた長方形とみなせればごまかせる。
円ですら正n面体として近似が可能だ。
こうすれば見かけ上の種類によらず1種類の処理を書けば済んでしまう。種類ごとに処理を作りこむこともない。

ただ、円どうしや長方形(辺が座標軸に平行なものに限る)どうしの判定にわざわざ多角形の処理を持ち出すのはオーバースペックで、無駄に処理が重くなる。
円どうし、長方形どうしの場合のような、より簡単な判定方法があり、かつその処理が頻繁に呼び出される可能性のある場合に限り固有の処理を呼び出し、ほかは汎用的な多角形どうしの判定とするのがいいだろう。

スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する