座標変換が、よく分からない。
ワールド座標、ローカル座標、スクリーン座標の違いが理解できない。
実は、座標変換を理解すれば、ゲーム開発の様々な場面で応用できます。
座標変換は、異なる座標系間で、位置を変換する処理です。
ワールド座標、ローカル座標、スクリーン座標など、様々な座標系があります。
それぞれの座標系を正しく理解し、変換すれば、より高度な処理ができます。
この記事では、座標変換をゲームで扱う考え方について、Unity実装例とともに解説します。
- 座標変換の考え方が分からない…
- ワールド座標、ローカル座標、スクリーン座標の違いが理解できない。
- 座標変換を実装したい。
✨ この記事でわかること
- 座標変換の基本概念
- ワールド座標、ローカル座標、スクリーン座標の違い
- 座標変換の実装方法
- Unityでの座標変換の使い方
- 初心者でも理解できる座標変換の考え方
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
座標変換とは何か(ゲーム制作目線)

座標変換は、異なる座標系間で、位置を変換する処理です。
ゲーム開発では、様々な座標系があります。
ワールド座標、ローカル座標、スクリーン座標など、それぞれに特徴があります。
座標変換を行うことで、異なる座標系間で、位置を正しく計算できます。
Unityでは、TransformコンポーネントやCameraコンポーネントの関数を使って、簡単に変換できます。
ゲームでの具体的な使い道

座標変換が、ゲームでどう使われているか確認してみましょう。
親子関係での座標計算
親オブジェクトと子オブジェクトの座標を、正しく計算する際に使われます。
ローカル座標とワールド座標を変換すれば、親子関係を正しく処理できます。
UI要素の配置
3Dオブジェクトの位置を、UI要素に反映する際に使われます。
ワールド座標をスクリーン座標に変換して、UI要素を配置します。
マウス位置から3D位置への変換
マウスの位置から、3D空間での位置を取得する際に使われます。
スクリーン座標をワールド座標に変換します。
カメラの変換
カメラの視点に応じて、座標を変換します。
ワールド座標をカメラのローカル座標に変換したり、スクリーン座標に変換したりします。
- 親子関係での座標計算
- UI要素の配置
- マウス位置から3D位置への変換
- カメラの変換
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

座標変換は、「座標系の定義 → 変換行列の計算 → 座標の変換」という流れで実現できます。
座標系の定義
ワールド座標、ローカル座標、スクリーン座標など、それぞれの座標系を定義します。
各座標系には、原点と軸の方向があります。
変換行列の計算
座標系間の変換行列を計算します。
変換行列は、移動、回転、拡大を含む4×4行列です。
座標の変換
変換行列を使って、座標を変換します。
元の座標系から、目標の座標系に変換します。
- 座標変換は、異なる座標系間で位置を変換する処理
- ワールド座標、ローカル座標、スクリーン座標など、様々な座標系がある
- 変換行列を使って、座標を変換する
- UnityのTransformやCameraコンポーネントで簡単に変換できる
Unityで実装する際の注意点(代表例)

Unityで座標変換を扱う場合の注意点を見ていきましょう。
ワールド座標とローカル座標の変換
Transformコンポーネントを使って、ワールド座標とローカル座標を変換します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class CoordinateTransform : MonoBehaviour { public Transform target; void Update() { // ローカル座標をワールド座標に変換 Vector3 localPos = new Vector3(1, 0, 0); Vector3 worldPos = target.TransformPoint(localPos); // ワールド座標をローカル座標に変換 Vector3 worldPos2 = new Vector3(5, 0, 0); Vector3 localPos2 = target.InverseTransformPoint(worldPos2); } } |
ワールド座標とスクリーン座標の変換
Cameraコンポーネントを使って、ワールド座標とスクリーン座標を変換します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class ScreenWorldTransform : MonoBehaviour { public Camera mainCamera; public Transform target; void Update() { // ワールド座標をスクリーン座標に変換 Vector3 worldPos = target.position; Vector3 screenPos = mainCamera.WorldToScreenPoint(worldPos); // スクリーン座標をワールド座標に変換 Vector3 mousePos = Input.mousePosition; mousePos.z = 10f; // カメラからの距離 Vector3 worldPos2 = mainCamera.ScreenToWorldPoint(mousePos); } } |
変換行列を使った変換
変換行列を使って、座標を変換します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class MatrixTransform : MonoBehaviour { public Transform target; void Update() { // 変換行列を取得 Matrix4x4 localToWorld = target.localToWorldMatrix; // ローカル座標をワールド座標に変換 Vector3 localPos = new Vector3(1, 0, 0); Vector3 worldPos = localToWorld.MultiplyPoint3x4(localPos); } } |

まとめ

この記事では、座標変換をゲームで扱う考え方について見てきました。
重要なポイントをおさらいします。
- 座標変換は、異なる座標系間で位置を変換する処理
- ワールド座標、ローカル座標、スクリーン座標など、様々な座標系がある
- TransformコンポーネントやCameraコンポーネントで簡単に変換できる
- 変換行列を使って、より詳細な制御ができる
- 親子関係やUI要素の配置などに活用できる
座標変換は、ゲーム開発で重要な技術です。
異なる座標系を正しく理解し、変換すれば、様々な機能を実現できます。
Unityの便利な関数を使うことで、簡単に実装できます。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、座標変換を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント