AABB当たり判定って何?
矩形判定のしくみが分からない。
実は、AABBは当たり判定の基本で、理解すれば様々な場面で使えます。
この記事では、AABB当たり判定の基礎を、2D/3Dでの活用方法と実装例で解説します。
✨ この記事でわかること
- AABBとは何か
- 矩形判定のしくみ
- 2D/3Dでの実装例
- 応用例と使い分け

AABBは、当たり判定の基本です。まずは、矩形判定のしくみを理解しましょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
AABBとは何か

AABBは、Axis-Aligned Bounding Boxの略です。
日本語では、軸に平行な境界ボックスと呼ばれます。
簡単に言うと、回転していない四角形の当たり判定です。
- A:Axis(軸)
- A:Aligned(整列)
- B:Bounding(境界)
- B:Box(ボックス)
AABBは、計算が簡単で、処理速度が速いのが特徴です。
そのため、多くのゲームで使われています。
矩形判定のしくみ

矩形判定は、2つの四角形が重なっているかを判定します。
判定方法は、次の通りです。
- 2つの矩形の最小X座標と最大X座標を比較
- 2つの矩形の最小Y座標と最大Y座標を比較
- すべての軸で重なっていれば、衝突している
計算式は、次の通りです。
|
1 2 3 4 5 6 |
bool IsColliding(Rect a, Rect b) { return a.xMin < b.xMax && a.xMax > b.xMin && a.yMin < b.yMax && a.yMax > b.yMin; } |
このコードで、2つの矩形が重なっているかを判定できます。
計算が簡単で、処理速度が速いのが特徴です。

AABBは、計算が簡単なので、処理速度が速いです。多くのゲームで使われている理由が分かりますね。
2Dでの実装例

2DでのAABB当たり判定の実装例を紹介します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using UnityEngine; public class AABB2D : MonoBehaviour { [SerializeField] private Transform other; void Update() { Rect rect1 = new Rect(transform.position.x - 0.5f, transform.position.y - 0.5f, 1f, 1f); Rect rect2 = new Rect(other.position.x - 0.5f, other.position.y - 0.5f, 1f, 1f); if (IsColliding(rect1, rect2)) { Debug.Log("衝突しています"); } } bool IsColliding(Rect a, Rect b) { return a.xMin < b.xMax && a.xMax > b.xMin && a.yMin < b.yMax && a.yMax > b.yMin; } } |
このコードで、2つのオブジェクトが重なっているかを判定できます。
rect1とrect2のサイズを変えると、当たり判定の範囲が調整できます。
3Dでの実装例

3DでのAABB当たり判定の実装例を紹介します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using UnityEngine; public class AABB3D : MonoBehaviour { [SerializeField] private Transform other; void Update() { Bounds bounds1 = new Bounds(transform.position, Vector3.one); Bounds bounds2 = new Bounds(other.position, Vector3.one); if (bounds1.Intersects(bounds2)) { Debug.Log("衝突しています"); } } } |
このコードで、3D空間でのAABB当たり判定ができます。
UnityのBoundsクラスを使うと、簡単に実装できます。
応用例と使い分け

AABBは、様々な場面で使えます。
- プレイヤーと敵の衝突判定
- アイテムの取得判定
- 画面外判定
- エリア判定
ただし、回転しているオブジェクトには使えません。
回転しているオブジェクトには、OBB(Oriented Bounding Box)を使います。
AABBは、計算が簡単で処理速度が速いので、最初の判定に使うことが多いです。
より精密な判定が必要な場合は、別の方法を使います。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
実践的な当たり判定を学ぶには

ここまで、AABB当たり判定の基礎について解説してきました。
ただし、実際のゲーム制作では、さらに多くの要素が必要になります。
アニメーション、エフェクト、UI、サウンドなど、全体を体系的に学ぶには、専門の講座が効率的です。
Unity入門の森では、アクションゲームの作り方を、基礎から完成まで丁寧に解説しています。
コードの意味から、なぜその実装方法を選ぶのかまで、しっかり理解できる内容になっています。
アクションゲーム制作に特化した講座なら、効率的にスキルアップできます。
ゲーム制作でスキルを上げたい方は、ぜひチェックしてみてください。
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

AABB当たり判定の基礎について解説しました。
要点のまとめ
- AABBは、軸に平行な境界ボックス
- 計算が簡単で、処理速度が速い
- 2D/3D両方で使える
- 回転しているオブジェクトには使えない
基本を押さえれば、あとは応用していくだけです。
まずは、ここで紹介したコードを実際に動かしてみてください。
動かしながら理解を深めていくのが、上達への近道です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント