マウスの位置から、3D空間の位置を取得したい。
UI要素の位置に、3Dオブジェクトを配置したい。
そんな場面で必要なのが、スクリーン座標とワールド座標の変換です。
スクリーン座標とワールド座標の変換は、UIと3D空間をつなぐ重要な計算です。
Unityでは、Camera.ScreenToWorldPointやCamera.WorldToScreenPointなどの関数で簡単に変換できますね。
この記事では、スクリーン座標とワールド座標の変換について、Unity実装例とともに解説します。
- スクリーン座標とワールド座標の変換方法が分からない…
- マウスの位置から、3D空間の位置を取得したい。
- UIと3D空間をつなぐ計算を知りたい。
✨ この記事でわかること
- スクリーン座標とワールド座標の基本概念
- 変換に必要な計算方法
- Unityでの変換関数の使い方
- マウス位置から3D位置への変換
- 初心者でも理解できる座標変換の考え方
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます
スクリーン座標ワールド座標変換とは何か(ゲーム制作目線)

スクリーン座標とワールド座標の変換は、2Dの画面座標と3D空間の座標を相互に変換する処理です。
スクリーン座標は、画面の左上を原点とする2D座標です。
ワールド座標は、3D空間での位置を表す座標です。
この変換を行うことで、UIと3D空間をつなぐことができます。
例えば、マウスの位置から、3D空間での位置を取得したり、3Dオブジェクトの位置を画面座標に変換したりできます。
Unityでは、Cameraコンポーネントの関数を使って、簡単に変換できます。
ゲームでの具体的な使い道

スクリーン座標とワールド座標の変換が、ゲームでどう使われているか確認してみましょう。
マウス位置から3D位置への変換
マウスの位置から、3D空間での位置を取得する際に使われます。
レイキャストなどと組み合わせて、オブジェクトを選択したり、位置を指定したりできます。
3Dオブジェクトの画面表示位置
3Dオブジェクトの位置を、画面座標に変換して表示する際に使われます。
UI要素を3Dオブジェクトの上に表示する場合などに使われます。
カメラからの距離を使った変換
カメラからの距離を指定して、スクリーン座標からワールド座標に変換できます。
これにより、カメラから一定の距離にある位置を取得できます。
UIと3Dオブジェクトの連携
UI要素の位置に、3Dオブジェクトを配置したり、その逆を行ったりできます。
これにより、UIと3D空間を連携させることができます。
- マウス位置から3D位置への変換
- 3Dオブジェクトの画面表示位置の取得
- カメラからの距離を使った変換
- UIと3Dオブジェクトの連携
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

スクリーン座標とワールド座標の変換は、カメラの行列を使った座標変換で実現します。
スクリーン座標からワールド座標への変換
スクリーン座標(2D)からワールド座標(3D)への変換は、カメラの逆行列を使います。
カメラからの距離を指定すれば、3D空間での位置を計算できます。
ワールド座標からスクリーン座標への変換
ワールド座標(3D)からスクリーン座標(2D)への変換は、カメラの行列を使います。
3D空間での位置を、画面座標に投影します。
カメラの役割
カメラは、3D空間を2D画面に投影する役割を持っています。
カメラの設定(視野角、位置、回転など)が、変換に影響します。
距離の重要性
スクリーン座標からワールド座標への変換では、カメラからの距離を指定する必要があります。
距離が分からない場合、レイキャストなどを使って取得する必要があります。
- スクリーン座標とワールド座標の変換は、カメラの行列を使った座標変換
- スクリーン座標からワールド座標への変換には、カメラからの距離が必要
- UnityのCamera関数を使うことで、簡単に変換できる
- カメラの設定が、変換に影響する
Unityで実装する際の注意点(代表例)

Unityでスクリーン座標とワールド座標を変換する場合の注意点を見ていきましょう。
スクリーン座標からワールド座標への変換
Camera.ScreenToWorldPoint関数を使って、スクリーン座標からワールド座標に変換します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class ScreenToWorld : MonoBehaviour { public Camera mainCamera; void Update() { // マウスのスクリーン座標を取得 Vector3 screenPos = Input.mousePosition; screenPos.z = 10f; // カメラからの距離を指定 // ワールド座標に変換 Vector3 worldPos = mainCamera.ScreenToWorldPoint(screenPos); // 3Dオブジェクトを移動 transform.position = worldPos; } } |
ワールド座標からスクリーン座標への変換
Camera.WorldToScreenPoint関数を使って、ワールド座標からスクリーン座標に変換します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public class WorldToScreen : MonoBehaviour { public Camera mainCamera; public Transform targetObject; void Update() { // ワールド座標からスクリーン座標に変換 Vector3 screenPos = mainCamera.WorldToScreenPoint(targetObject.position); // UI要素を移動 uiElement.transform.position = screenPos; } } |
レイキャストを使った変換
レイキャストを使って、マウス位置から3D空間の位置を取得します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
public class RaycastConversion : MonoBehaviour { public Camera mainCamera; void Update() { if (Input.GetMouseButtonDown(0)) { Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { // 衝突位置を取得 Vector3 worldPos = hit.point; transform.position = worldPos; } } } } |
UI要素の位置に3Dオブジェクトを配置
UI要素の位置に、3Dオブジェクトを配置する例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class UIToWorld : MonoBehaviour { public Camera mainCamera; public RectTransform uiElement; public Transform targetObject; void Update() { // UI要素のスクリーン座標を取得 Vector3 screenPos = RectTransformUtility.WorldToScreenPoint(mainCamera, uiElement.position); screenPos.z = Vector3.Distance(mainCamera.transform.position, targetObject.position); // ワールド座標に変換 Vector3 worldPos = mainCamera.ScreenToWorldPoint(screenPos); targetObject.position = worldPos; } } |
実装のコツ
カメラからの距離を適切に指定することが大切です。
レイキャストを使うことで、正確な位置を取得できます。
UI要素との連携では、RectTransformUtilityを使うと便利です。

まとめ

この記事では、スクリーン座標とワールド座標の変換について見てきました。
重要なポイントをおさらいします。
- スクリーン座標とワールド座標の変換は、カメラの行列を使った座標変換
- スクリーン座標からワールド座標への変換には、カメラからの距離が必要
- UnityのCamera関数(ScreenToWorldPoint、WorldToScreenPoint)を使うことで簡単に変換できる
- レイキャストを使うことで、正確な位置を取得できる
- UI要素との連携では、RectTransformUtilityを使うと便利
スクリーン座標とワールド座標の変換は、UIと3D空間をつなぐ重要な計算です。
UnityのCamera関数を使うことで、簡単に変換できます。
カメラからの距離を適切に指定することが大切です。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、スクリーン座標ワールド座標変換を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント