親オブジェクトの座標系で、ワールド座標の位置を表現したい。
親子関係のあるオブジェクトで、座標を正しく計算したい。
実は、ワールド座標をローカル座標に変換すれば、親オブジェクトを基準とした座標に変換できます。
ワールド座標からローカル座標への変換は、親子関係での座標計算に欠かせない処理です。
Unityでは、Transform.InverseTransformPointという関数で簡単に変換できますね。
この記事では、ワールド座標をローカル座標に変換する方法について、Unity実装例とともに解説します。
- ワールド座標をローカル座標に変換する方法が分からない…
- 親オブジェクトを基準とした座標計算が理解できていない。
- 親子関係での座標変換を知りたい。
✨ この記事でわかること
- ワールド座標からローカル座標への変換の基本
- 親子関係での座標系の考え方
- Unityでの変換関数の使い方
- 親オブジェクトを基準とした座標計算
- 初心者でも理解できる座標変換の考え方
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
ワールド座標ローカル座標変換とは何か(ゲーム制作目線)

ワールド座標からローカル座標への変換は、シーン全体の座標系から、親オブジェクトの座標系への変換です。
ワールド座標は、シーン全体を基準とした座標です。
ローカル座標は、親オブジェクトを基準とした座標です。
この変換を行うことで、親オブジェクトを基準とした座標で位置を表現できます。
例えば、親オブジェクトの前方に何か配置したい場合、ワールド座標をローカル座標に変換してから計算します。
Unityでは、TransformコンポーネントのInverseTransformPoint関数を使って、簡単に変換できます。
ゲームでの具体的な使い道

ワールド座標からローカル座標への変換が、ゲームでどう使われているか確認してみましょう。
親オブジェクトを基準とした配置
ワールド座標の位置を、親オブジェクトを基準としたローカル座標に変換します。
親オブジェクトの前方や上方など、親を基準とした位置にオブジェクトを配置する際に使われます。
相対的な位置関係の計算
2つのオブジェクトの位置関係を、親オブジェクトを基準として計算します。
親オブジェクトから見た、子オブジェクトの相対位置を取得できます。
親オブジェクトの座標系での判定
当たり判定や距離判定を、親オブジェクトの座標系で行います。
親オブジェクトが回転していても、正しい判定ができます。
UI要素の配置計算
ワールド座標の3D位置を、UIのローカル座標に変換します。
3Dオブジェクトに対応するUI要素の位置を計算する際に使われます。
- 親オブジェクトを基準とした配置
- 相対的な位置関係の計算
- 親オブジェクトの座標系での判定
- UI要素の配置計算
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

ワールド座標からローカル座標への変換は、「ワールド座標 → 親の変換行列の逆変換 → ローカル座標」という流れで実現できます。
親の変換行列
親オブジェクトの位置、回転、拡大を表す変換行列があります。
この変換行列を使うことで、ローカル座標からワールド座標に変換できます。
逆変換行列による変換
ワールド座標からローカル座標に変換するには、親の変換行列の逆変換を使います。
逆変換行列は、親の変換を打ち消すような変換です。
座標系の変換
ワールド座標系から、親オブジェクトの座標系へ変換されます。
親オブジェクトの位置、回転、拡大が考慮されます。
相対位置の取得
変換後のローカル座標は、親オブジェクトからの相対位置を表します。
親オブジェクトが移動・回転しても、ローカル座標は変わりません。
- ワールド座標からローカル座標への変換は、親の変換行列の逆変換を使う
- 親オブジェクトの位置、回転、拡大が考慮される
- 変換後のローカル座標は、親からの相対位置を表す
- 親オブジェクトが移動・回転しても、ローカル座標は変わらない
Unityで実装する際の注意点(代表例)

Unityでワールド座標をローカル座標に変換する場合の注意点を見ていきましょう。
基本的な変換実装(InverseTransformPointを使う方法)
Transform.InverseTransformPointを使った、基本的な変換実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class WorldToLocalConverter : MonoBehaviour { public Transform parentObject; // 親オブジェクト public Vector3 worldPosition; // 変換したいワールド座標 void Update() { // ワールド座標をローカル座標に変換 Vector3 localPosition = parentObject.InverseTransformPoint(worldPosition); Debug.Log($"Local Position: {localPosition}"); } } |
親オブジェクトを基準とした配置
ワールド座標の位置を、親オブジェクトを基準としたローカル座標に変換して配置します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
public class PositionRelativeToParent : MonoBehaviour { public Transform parentObject; public Transform childObject; public Vector3 offsetInWorld; // ワールド座標でのオフセット void Start() { // ワールド座標での目標位置を計算 Vector3 targetWorldPos = parentObject.position + offsetInWorld; // ローカル座標に変換 Vector3 localPos = parentObject.InverseTransformPoint(targetWorldPos); // 子オブジェクトを配置(親の子として) childObject.SetParent(parentObject); childObject.localPosition = localPos; } } |
方向ベクトルの変換
方向ベクトルもローカル座標に変換できます。
|
1 2 3 4 5 6 7 |
public Vector3 ConvertDirectionToLocal(Transform parent, Vector3 worldDirection) { // 方向ベクトルをローカル座標系に変換 Vector3 localDirection = parent.InverseTransformDirection(worldDirection); return localDirection; } |
座標系での距離計算
親オブジェクトの座標系で、2点間の距離を計算します。
|
1 2 3 4 5 6 7 8 9 10 11 |
public float CalculateLocalDistance(Transform parent, Vector3 worldPos1, Vector3 worldPos2) { // 両方の位置をローカル座標に変換 Vector3 localPos1 = parent.InverseTransformPoint(worldPos1); Vector3 localPos2 = parent.InverseTransformPoint(worldPos2); // ローカル座標系での距離を計算 float distance = Vector3.Distance(localPos1, localPos2); return distance; } |
親オブジェクトが変更された場合
親オブジェクトが移動・回転・拡大されても、ローカル座標は変わりません。
子オブジェクトのワールド座標は、親の変換によって自動的に更新されます。
拡大の考慮
親オブジェクトが拡大されている場合、ローカル座標への変換時に拡大が考慮されます。
拡大を考慮しない方向ベクトルの変換には、InverseTransformDirectionを使います。

まとめ

この記事では、ワールド座標をローカル座標に変換する方法について見てきました。
重要なポイントをおさらいします。
- ワールド座標からローカル座標への変換は、親の変換行列の逆変換を使った処理
- Unityでは、Transform.InverseTransformPoint関数で簡単に変換できる
- 親オブジェクトの位置、回転、拡大が考慮される
- 変換後のローカル座標は、親からの相対位置を表す
- 親オブジェクトを基準とした配置や判定などに活用できる
ワールド座標からローカル座標への変換は、親子関係での座標計算に欠かせない技術です。
親オブジェクトを基準とした座標で位置を表現すれば、より柔軟な配置や計算が可能になります。
座標変換の考え方を理解すれば、より複雑な座標計算も可能になります。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、座標変換を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント