Unityでビュー ポイントを操作するための基本的な方法について解説します。
ビュー ポイントは、カメラの視点を特定の座標系に変換する際に使用されます。
ViewportとWorldの変換
Unityには、カメラの視点に関連する3つの座標系があります。それぞれの座標系を理解することで、カメラを効果的に操作できます。
ビューポート座標(Viewport Coordinates)
ビューポート座標は、カメラビューの左下を (0,0)、右上を (1,1) とする正規化された座標系です。例えば、Camera.ViewportToWorldPoint
メソッドを使ってビューポート座標をワールド座標に変換できます。
using UnityEngine;
public class ViewportToWorldExample : MonoBehaviour
{
void Update()
{
Camera cam = Camera.main;
Vector3 viewportPosition = new Vector3(0.5f, 0.5f, cam.nearClipPlane);
Vector3 worldPosition = cam.ViewportToWorldPoint(viewportPosition);
Debug.Log("World Position: " + worldPosition);
}
}
このスクリプトは、ビューポートの中心 (0.5, 0.5) をワールド座標に変換し、その座標をログに出力します。
ワールド座標(World Coordinates)
ワールド座標は、ゲーム内のオブジェクトの位置を表す3D座標系です。例えば、Camera.WorldToViewportPoint
メソッドを使ってワールド座標をビューポート座標に変換できます。
using UnityEngine;
public class WorldToViewportExample : MonoBehaviour
{
public Transform target;
void Update()
{
Camera cam = Camera.main;
Vector3 viewportPosition = cam.WorldToViewportPoint(target.position);
Debug.Log("Viewport Position: " + viewportPosition);
}
}
このスクリプトは、ターゲットオブジェクトのワールド座標をビューポート座標に変換し、その座標をログに出力します。
スクリーン座標(Screen Coordinates)
スクリーン座標は、スクリーン上のピクセル単位での位置を表す座標系です。例えば、Camera.ViewportToScreenPoint
を使ってビューポート座標をスクリーン座標に変換できます。
using UnityEngine;
public class ViewportToScreenExample : MonoBehaviour
{
void Update()
{
Camera cam = Camera.main;
Vector3 viewportPosition = new Vector3(0.5f, 0.5f, cam.nearClipPlane);
Vector3 screenPosition = cam.ViewportToScreenPoint(viewportPosition);
Debug.Log("Screen Position: " + screenPosition);
}
}
このスクリプトは、ビューポートの中心をスクリーン座標に変換し、その座標をログに出力します。
まとめ
- ビューポート座標はカメラビュー内の正規化された座標。
- ワールド座標はゲーム内の3D空間での位置。
- スクリーン座標はディスプレイ上のピクセル単位での位置。
これらの座標系を理解し、適切に変換することで、カメラ操作やUI配置を正確に行うことができます。