ゲームプログラミング独学ブログ

ゲームプログラミングを初心者・未経験から独学で身に着けるための情報をまとめていきます。Unityを使った2D・3Dゲームの開発方法やゲームクリエイターになるための情報もまとめていきます。

Unityでビュー ポイント(Viewpoint)を活用する方法

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配置を正確に行うことができます。