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

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

ワールド座標からスクリーン座標への変換が、ゲームでどう使われているか確認してみましょう。
3Dオブジェクトの上にUIを表示
3Dオブジェクトの位置を画面座標に変換して、その位置にUI要素を配置します。
プレイヤーの頭上に名前を表示したり、敵の頭上にHPバーを表示したりする際に使われます。
オブジェクトが画面内にあるかの判定
3Dオブジェクトの位置を画面座標に変換して、画面内に表示されているかを判定できます。
画面外のオブジェクトを非表示にしたり、画面端に近いオブジェクトを検出したりできます。
ポインターやカーソルの位置合わせ
3Dオブジェクトの位置を画面座標に変換して、ポインターやカーソルをその位置に合わせます。
オブジェクト選択時のハイライト表示などに使われます。
ミニマップへの座標投影
ワールド座標をスクリーン座標に変換する考え方を応用して、ミニマップに座標を投影できます。
3D空間の位置を、2Dのミニマップ上の位置に変換して表示します。
- 3Dオブジェクトの上にUIを表示
- オブジェクトが画面内にあるかの判定
- ポインターやカーソルの位置合わせ
- ミニマップへの座標投影
作り方は分かった。
でも完成まで行けない人へ
当たり判定・移動・カメラ・AIまで、
実装しながら学べる「永久会員チケット」です。
※ まずは内容を見るだけでOK
考え方・仕組みを図解イメージで説明

ワールド座標からスクリーン座標への変換は、「3D空間の位置 → カメラの投影 → 2D画面座標」という流れで実現できます。
カメラによる投影
3D空間の位置は、カメラを通して画面に投影されます。
カメラの視野角や位置によって、同じ3D位置でも画面座標が変わります。
投影行列による変換
カメラの投影行列を使って、3D空間の位置を2D画面座標に変換します。
投影行列は、カメラの設定(視野角、アスペクト比、近接平面、遠方平面)から計算されます。
正規化デバイス座標への変換
まず、3D空間の位置を正規化デバイス座標(NDC)に変換します。
NDCは、-1から1の範囲で画面を表現する座標系です。
画面座標への変換
NDCを画面の解像度に合わせて、実際の画面座標に変換します。
画面の左上を原点とし、X軸は右方向、Y軸は下方向が正の値です。
- ワールド座標からスクリーン座標への変換は、カメラの投影計算を使う
- カメラの位置や角度によって、同じ3D位置でも画面座標が変わる
- 投影行列を使って、3D位置を2D画面座標に変換する
- 画面座標は左上が原点で、X軸は右方向、Y軸は下方向が正
Unityで実装する際の注意点(代表例)

Unityでワールド座標をスクリーン座標に変換する場合の注意点を見ていきましょう。
基本的な変換実装(WorldToScreenPointを使う方法)
Camera.WorldToScreenPointを使った、基本的な変換実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class WorldToScreenConverter : MonoBehaviour { public Camera mainCamera; public Transform targetObject; // 変換したい3Dオブジェクト void Update() { // ワールド座標をスクリーン座標に変換 Vector3 screenPos = mainCamera.WorldToScreenPoint(targetObject.position); // 画面座標を取得(X, Y が画面座標、Z がカメラからの距離) float screenX = screenPos.x; float screenY = screenPos.y; float distance = screenPos.z; Debug.Log($"Screen Position: ({screenX}, {screenY}), Distance: {distance}"); } } |
UI要素の位置に反映
変換したスクリーン座標を、UI要素の位置に反映する実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; using UnityEngine.UI; public class UIWorldPosition : MonoBehaviour { public Camera mainCamera; public Transform targetObject; public RectTransform uiElement; // UI要素のRectTransform void Update() { // ワールド座標をスクリーン座標に変換 Vector3 screenPos = mainCamera.WorldToScreenPoint(targetObject.position); // UI要素の位置を設定(Canvasの解像度を考慮) uiElement.position = screenPos; } } |
画面内判定
オブジェクトが画面内にあるかを判定する実装です。
|
1 2 3 4 5 6 7 8 9 10 11 12 |
public bool IsOnScreen(Transform target, Camera camera) { Vector3 screenPos = camera.WorldToScreenPoint(target.position); // 画面内かどうかを判定 bool isOnScreen = screenPos.x >= 0 && screenPos.x <= Screen.width && screenPos.y >= 0 && screenPos.y <= Screen.height && screenPos.z > 0; // カメラの前方にあるか return isOnScreen; } |
Z値の意味
WorldToScreenPointの戻り値のZ値は、カメラからの距離を表します。
Z値が正の場合は、オブジェクトがカメラの前方にあります。
Z値が負の場合は、オブジェクトがカメラの後方にあります。
カメラの取得
変換に使うカメラは、通常はMainCameraを取得します。
複数のカメラを使う場合は、適切なカメラを指定する必要があります。
|
1 2 3 4 5 |
Camera mainCamera = Camera.main; // MainCameraタグのカメラを取得 // または、直接参照する public Camera targetCamera; |
Canvasとの連携
UI要素を配置する場合、Canvasの設定に注意が必要です。
Screen Space – Overlayの場合は、そのままスクリーン座標を使用できます。
Screen Space – Cameraの場合は、カメラを指定して変換する必要があります。

まとめ

この記事では、ワールド座標をスクリーン座標に変換する方法について見てきました。
重要なポイントをおさらいします。
- ワールド座標からスクリーン座標への変換は、カメラの投影計算を使った処理
- Unityでは、Camera.WorldToScreenPoint関数で簡単に変換できる
- 変換結果のZ値は、カメラからの距離を表す(正の値で前方、負の値で後方)
- 3Dオブジェクトの上にUIを表示したり、画面内判定などに活用できる
- Canvasの設定によって、UI要素への反映方法が変わる
ワールド座標からスクリーン座標への変換は、UIと3D空間を連携させる重要な技術です。
3Dオブジェクトの位置を画面座標で取得すれば、様々な機能を実現できます。
カメラの投影計算を理解すれば、より高度な座標変換も可能になります。
実際のゲーム実装とセットで学ぶことで、理解が深まるはずです。
Unity入門の森では、座標変換を含むベクトルと行列を、実際のゲーム実装とともに体系的に学べます。
ぜひチェックしてみてください。
Unity入門の森をチェック Unity初心者でも安心。動画解説+完成サンプル付きで実装まで進められます





コメント