ゲームでオブジェクト同士が衝突しているかを判定したい。
球同士の当たり判定を実装したいけど、どう計算すればいいのか。
実は、球の当たり判定は、中心間の距離と半径の比較で判定できるものです。
これらを理解すれば、簡単に球の当たり判定を実装できます。
この記事では、球の当たり判定の仕組みとして、距離と半径で判定する衝突検出を見ていきましょう。
- 球の当たり判定の計算方法が分からない…
- 距離と半径を使った判定方法が理解できていない。
- 球同士の衝突判定を実装したい。
✨ この記事でわかること
- 球の当たり判定の基本となる距離計算
- 中心間の距離と半径の比較
- 球と点の距離判定
- Unityでの球当たり判定の実装手順
- 初心者でも理解できる当たり判定の基礎
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
球の当たり判定とは何か(ゲーム制作目線)

球の当たり判定は、2つの球の中心間の距離と、それぞれの半径を比較して衝突を判定する処理です。
球の当たり判定は、計算がシンプルで高速なのが特徴です。
2つの球が衝突しているかは、中心間の距離が半径の合計以下かどうかで判定できます。
球の当たり判定の基本式は、以下のようになります。
- 距離 <= 半径1 + 半径2 なら衝突している
- 距離 > 半径1 + 半径2 なら衝突していない
Unityでは、Vector3.Distanceを使って距離を計算し、簡単に判定できます。
ゲームでの具体的な使い道

球の当たり判定が、ゲームでどう使われているか確認してみましょう。
敵と弾の当たり判定
シューティングゲームで、プレイヤーの弾が敵に当たったかを判定します。
弾と敵を球として扱い、中心間の距離と半径の合計を比較します。
アイテムの取得判定
プレイヤーがアイテムを取得したかを判定します。
プレイヤーとアイテムを球として扱い、距離を計算して判定します。
パーティクルの衝突判定
パーティクル同士の衝突を判定します。
各パーティクルを球として扱い、距離と半径で判定します。
- 敵と弾の当たり判定
- アイテムの取得判定
- パーティクルの衝突判定
- プレイヤーと障害物の衝突判定
考え方・仕組みを図解イメージで説明

球の当たり判定は、「中心位置の取得 → 距離の計算 → 半径の合計と比較」という流れで実現できます。
中心間の距離の計算
2つの球の中心位置から、距離を計算します。
ベクトルの引き算と距離計算を使って、中心間の距離を求めます。
半径の合計との比較
中心間の距離と、2つの球の半径の合計を比較します。
距離が半径の合計以下なら、衝突していると判定します。
点と球の距離判定
点が球の内部にあるかを判定する場合も、距離と半径を比較します。
点から球の中心までの距離が、半径以下なら球の内部にあります。
- 球の当たり判定は、中心間の距離と半径の合計を比較する
- 距離 <= 半径1 + 半径2 なら衝突している
- 計算がシンプルで高速なのが特徴
- Vector3.Distanceを使って、簡単に距離を計算できる
Unityで実装する際の注意点(代表例)

Unityで球の当たり判定を実装する場合の注意点を見ていきましょう。
基本的な球当たり判定
2つの球の中心間の距離と半径の合計を比較します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class SphereCollision : MonoBehaviour { public Transform sphere1; public Transform sphere2; public float radius1 = 1f; public float radius2 = 1f; bool CheckCollision(Vector3 center1, float radius1, Vector3 center2, float radius2) { float distance = Vector3.Distance(center1, center2); float radiusSum = radius1 + radius2; return distance <= radiusSum; } void Update() { if (CheckCollision(sphere1.position, radius1, sphere2.position, radius2)) { Debug.Log("衝突しています"); } } } |
球と点の距離判定
点が球の内部にあるかを判定します。
|
1 2 3 4 5 6 |
bool IsPointInSphere(Vector3 point, Vector3 center, float radius) { float distance = Vector3.Distance(point, center); return distance <= radius; } |
SphereColliderを使った実装
UnityのSphereColliderを使うと、自動的に当たり判定が行われます。
|
1 2 3 4 5 6 7 8 |
void OnTriggerEnter(Collider other) { if (other.CompareTag("Enemy")) { Debug.Log("敵と衝突しました"); } } |

まとめ

この記事では、球の当たり判定について見てきました。
重要なポイントをおさらいします。
- 球の当たり判定は、中心間の距離と半径の合計を比較する
- 距離 <= 半径1 + 半径2 なら衝突している
- 計算がシンプルで高速なのが特徴
- Vector3.Distanceを使って、簡単に距離を計算できる
- UnityのSphereColliderを使うと、自動的に当たり判定が行われる
球の当たり判定は、ゲーム開発で頻繁に使われる重要な技術です。
距離と半径の比較を理解すれば、簡単に当たり判定を実装できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、球当たり判定を含む当たり判定を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント