点と線の最短距離を計算したい。
でも、どう計算すればいいのか分からない。
実は、最短距離は、ベクトル計算を使って求めることができるものです。
これらを理解すれば、様々な距離計算を実装できます。
この記事では、最短距離を計算する方法として、点と線・点と面の距離の求め方を見ていきましょう。
- 最短距離の計算方法が分からない…
- 点と線、点と面の距離の求め方が理解できていない。
- 距離計算を使った当たり判定を実装したい。
✨ この記事でわかること
- 点と点の距離の計算方法
- 点と線の最短距離の求め方
- 点と面の最短距離の求め方
- Unityでの距離計算の実装手順
- 初心者でも理解できる距離計算の基礎
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
最短距離計算とは何か(ゲーム制作目線)

最短距離計算は、2つの点、点と線、点と面の間の最短距離を求める処理です。
ゲーム開発では、当たり判定やAIの判断などでよく使われます。
最短距離計算の基本要素は、以下のものです。
- 点と点の距離:2つの点の間の直線距離
- 点と線の距離:点から線への最短距離
- 点と面の距離:点から面への最短距離
Unityでは、Vector3.Distanceやベクトル計算を使って、距離を計算できます。
ゲームでの具体的な使い道

最短距離計算が、ゲームでどう使われているか確認してみましょう。
当たり判定
距離を使って、オブジェクト同士が衝突しているかを判定します。
距離が一定値以下なら、衝突していると判定します。
AIの判断
敵AIがプレイヤーとの距離を計算して、行動を決定します。
距離に応じて、追尾や攻撃などの行動を切り替えます。
カメラの制御
カメラとオブジェクトの距離を計算して、カメラの位置を調整します。
距離に応じて、フォーカスやズームを調整します。
- 当たり判定
- AIの判断
- カメラの制御
- パーティクルの生成位置
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

最短距離計算は、「ベクトルの計算 → 内積や外積の利用 → 距離の算出」という流れで実現できます。
点と点の距離
2つの点の間の距離は、ベクトルの長さで求められます。
2つの点の位置ベクトルを引き算して、その長さを計算します。
点と線の距離
点から線への最短距離は、点から線への垂線の長さです。
ベクトルの内積を使って、垂線の長さを計算します。
点と面の距離
点から面への最短距離は、点から面への垂線の長さです。
法線ベクトルを使って、距離を計算します。
- 点と点の距離は、ベクトルの長さで求められる
- 点と線の距離は、内積を使って垂線の長さを計算する
- 点と面の距離は、法線ベクトルを使って計算する
- 距離計算は、当たり判定やAIの判断で頻繁に使われる
Unityで実装する際の注意点(代表例)

Unityで最短距離計算を実装する場合の注意点を見ていきましょう。
点と点の距離
Vector3.Distanceを使って、2点間の距離を計算します。
|
1 2 3 4 5 |
Vector3 point1 = new Vector3(0, 0, 0); Vector3 point2 = new Vector3(3, 4, 0); float distance = Vector3.Distance(point1, point2); // 5.0 |
点と線の距離
点から線への最短距離を計算します。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
float DistanceToLine(Vector3 point, Vector3 lineStart, Vector3 lineEnd) { Vector3 line = lineEnd - lineStart; Vector3 pointToStart = point - lineStart; float t = Vector3.Dot(pointToStart, line) / line.sqrMagnitude; t = Mathf.Clamp01(t); Vector3 closestPoint = lineStart + line * t; return Vector3.Distance(point, closestPoint); } |
点と面の距離
点から平面への最短距離を計算します。
|
1 2 3 4 5 6 |
float DistanceToPlane(Vector3 point, Vector3 planePoint, Vector3 planeNormal) { float distance = Vector3.Dot(planeNormal, point - planePoint); return Mathf.Abs(distance); } |

まとめ

この記事では、最短距離計算について見てきました。
重要なポイントをおさらいします。
- 点と点の距離は、ベクトルの長さで求められる
- 点と線の距離は、内積を使って垂線の長さを計算する
- 点と面の距離は、法線ベクトルを使って計算する
- Vector3.Distanceを使って、簡単に距離を計算できる
- 距離計算は、当たり判定やAIの判断で頻繁に使われる
最短距離計算は、ゲーム開発で頻繁に使われる重要な技術です。
ベクトル計算を理解すれば、様々な距離計算を実装できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、最短距離計算を含む当たり判定を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント