ゲーム数学を「使える力」に変えよう!ゲーム講座PDF無料プレゼント中>>

ワールド座標をローカル座標に変換する方法|親子関係での座標計算

ベクトルと行列で理解するゲーム数学|移動・回転・変換の基本

親オブジェクトの座標系で、ワールド座標の位置を表現したい。

親子関係のあるオブジェクトで、座標を正しく計算したい。

実は、ワールド座標をローカル座標に変換すれば、親オブジェクトを基準とした座標に変換できます。

ワールド座標からローカル座標への変換は、親子関係での座標計算に欠かせない処理です。

Unityでは、Transform.InverseTransformPointという関数で簡単に変換できますね。

この記事では、ワールド座標をローカル座標に変換する方法について、Unity実装例とともに解説します。

  • ワールド座標をローカル座標に変換する方法が分からない…
  • 親オブジェクトを基準とした座標計算が理解できていない。
  • 親子関係での座標変換を知りたい。

この記事でわかること

  • ワールド座標からローカル座標への変換の基本
  • 親子関係での座標系の考え方
  • Unityでの変換関数の使い方
  • 親オブジェクトを基準とした座標計算
  • 初心者でも理解できる座標変換の考え方
ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

ワールド座標ローカル座標変換とは何か(ゲーム制作目線)

ワールド座標ローカル座標変換の基本

ワールド座標からローカル座標への変換は、シーン全体の座標系から、親オブジェクトの座標系への変換です。

ワールド座標は、シーン全体を基準とした座標です。

ローカル座標は、親オブジェクトを基準とした座標です。

この変換を行うことで、親オブジェクトを基準とした座標で位置を表現できます

例えば、親オブジェクトの前方に何か配置したい場合、ワールド座標をローカル座標に変換してから計算します。

Unityでは、TransformコンポーネントのInverseTransformPoint関数を使って、簡単に変換できます。

ゲームでの具体的な使い道

ワールド座標ローカル座標変換のゲームでの使用例

ワールド座標からローカル座標への変換が、ゲームでどう使われているか確認してみましょう。

親オブジェクトを基準とした配置

ワールド座標の位置を、親オブジェクトを基準としたローカル座標に変換します。

親オブジェクトの前方や上方など、親を基準とした位置にオブジェクトを配置する際に使われます。

相対的な位置関係の計算

2つのオブジェクトの位置関係を、親オブジェクトを基準として計算します。

親オブジェクトから見た、子オブジェクトの相対位置を取得できます。

親オブジェクトの座標系での判定

当たり判定や距離判定を、親オブジェクトの座標系で行います。

親オブジェクトが回転していても、正しい判定ができます。

UI要素の配置計算

ワールド座標の3D位置を、UIのローカル座標に変換します。

3Dオブジェクトに対応するUI要素の位置を計算する際に使われます。

ワールド座標ローカル座標変換が使われる場面

  • 親オブジェクトを基準とした配置
  • 相対的な位置関係の計算
  • 親オブジェクトの座標系での判定
  • UI要素の配置計算

作り方は分かった。
でも完成まで行けない人へ

当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。

買い切り 全講座 今後追加も無料
永久会員チケットを見てみる

※ まずは内容を見るだけでOK

考え方・仕組みを図解イメージで説明

ワールド座標ローカル座標変換の仕組み

ワールド座標からローカル座標への変換は、「ワールド座標 → 親の変換行列の逆変換 → ローカル座標」という流れで実現できます。

親の変換行列

親オブジェクトの位置、回転、拡大を表す変換行列があります。

この変換行列を使うことで、ローカル座標からワールド座標に変換できます。

逆変換行列による変換

ワールド座標からローカル座標に変換するには、親の変換行列の逆変換を使います。

逆変換行列は、親の変換を打ち消すような変換です。

座標系の変換

ワールド座標系から、親オブジェクトの座標系へ変換されます。

親オブジェクトの位置、回転、拡大が考慮されます。

相対位置の取得

変換後のローカル座標は、親オブジェクトからの相対位置を表します。

親オブジェクトが移動・回転しても、ローカル座標は変わりません。

⚠️ 重要なポイント

  • ワールド座標からローカル座標への変換は、親の変換行列の逆変換を使う
  • 親オブジェクトの位置、回転、拡大が考慮される
  • 変換後のローカル座標は、親からの相対位置を表す
  • 親オブジェクトが移動・回転しても、ローカル座標は変わらない

Unityで実装する際の注意点(代表例)

Unityでのワールド座標ローカル座標変換の実装

Unityでワールド座標をローカル座標に変換する場合の注意点を見ていきましょう。

基本的な変換実装(InverseTransformPointを使う方法)

Transform.InverseTransformPointを使った、基本的な変換実装です。

親オブジェクトを基準とした配置

ワールド座標の位置を、親オブジェクトを基準としたローカル座標に変換して配置します。

方向ベクトルの変換

方向ベクトルもローカル座標に変換できます。

座標系での距離計算

親オブジェクトの座標系で、2点間の距離を計算します。

親オブジェクトが変更された場合

親オブジェクトが移動・回転・拡大されても、ローカル座標は変わりません。

子オブジェクトのワールド座標は、親の変換によって自動的に更新されます。

拡大の考慮

親オブジェクトが拡大されている場合、ローカル座標への変換時に拡大が考慮されます。

拡大を考慮しない方向ベクトルの変換には、InverseTransformDirectionを使います。

博士
博士
ワールド座標からローカル座標への変換は、親子関係での座標計算に欠かせない処理です。InverseTransformPointを使えば簡単に変換できます。親オブジェクトを基準とした配置や判定など、様々な場面で活用できますね!

まとめ

ワールド座標ローカル座標変換のまとめ

この記事では、ワールド座標をローカル座標に変換する方法について見てきました。

重要なポイントをおさらいします。

重要なポイント:

  • ワールド座標からローカル座標への変換は、親の変換行列の逆変換を使った処理
  • Unityでは、Transform.InverseTransformPoint関数で簡単に変換できる
  • 親オブジェクトの位置、回転、拡大が考慮される
  • 変換後のローカル座標は、親からの相対位置を表す
  • 親オブジェクトを基準とした配置や判定などに活用できる

ワールド座標からローカル座標への変換は、親子関係での座標計算に欠かせない技術です。

親オブジェクトを基準とした座標で位置を表現すれば、より柔軟な配置や計算が可能になります。

座標変換の考え方を理解すれば、より複雑な座標計算も可能になります。

実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。

Unity入門の森では、座標変換を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。

ぜひチェックしてみてください。

ゲーム制作を“理解しながら”始めたい方へ
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます

【ゲームの作り方講座もプレゼント中!】

コメント

タイトルとURLをコピーしました