ヒットボックス方式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/13 13:05 UTC 版)
衝突判定を取りたい双方のオブジェクトを「四角い箱(矩形、ボックス)」で梱包することを考える。この「四角い箱」のことを一般的に「境界ボックス(バウンディングボックス)」と呼ぶが、ゲーム業界では「ヒットボックス」と呼ぶ。以下に述べるのは、ヒットボックス方式を用いた衝突判定の「基本的な方法」である。 2D空間において、それぞれの矩形を座標(x, y) と幅・高さ(lx, ly) で表す。ふたつの矩形A・矩形B について衝突判定を行うには、以下の条件が成り立っているかどうかを調べる。成り立てば当たり、そうでなければ外れと判定できる。 ( A x ≤ B x + B l x ) ∧ ( B x ≤ A x + A l x ) ∧ ( A y ≤ B y + B l y ) ∧ ( B y ≤ A y + A l y ) {\displaystyle (A_{x}\leq B_{x}+B_{lx})\land (B_{x}\leq A_{x}+A_{lx})\land (A_{y}\leq B_{y}+B_{ly})\land (B_{y}\leq A_{y}+A_{ly})} 3D空間においては、衝突判定を取りたい双方のオブジェクトを「直方体」とみなし、幅・高さ・奥行き(lx, ly, lz) で表す以外は上と同じである。 ヒットボックス方式の主な実装方法は、上で述べた他に、境界球方式、AABB方式、OBB方式、凸包方式、などがある。後者に行くにしたがって精密な衝突判定が行えるが、計算コストが大きくなり、特に凸包方式はゲームではまず使われない。2010年代以降には凸包同士の衝突計算をGJKアルゴリズムを用いてGPUでリアルタイムで実行するための研究が進んでおり、今後のゲームエンジンに実装される可能性もある(すでに実装されている可能性もある)が、複雑なオブジェクト同士の衝突判定を行う伝統的な方法としては、複数のヒットボックスを組み合わせて近似する方式が使われる。
※この「ヒットボックス方式」の解説は、「衝突判定」の解説の一部です。
「ヒットボックス方式」を含む「衝突判定」の記事については、「衝突判定」の概要を参照ください。
- ヒットボックス方式のページへのリンク