4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Unity] カメラ領域からワールド領域を算出する

Last updated at Posted at 2017-08-30

unity.jpg

はじめに

以下のように、
Orthographicカメラの描画範囲から、ワールド座標を取り出し、
かつどんなアスペクト比にも対応できるようなスクリプトを書いていきます。

実装

UnityのOrthographicカメラを使用した場合、Sizeを選択するアトリビュートが出現します。

2017-08-30_123646.jpg

ここでいうSizeとは、画面の縦半分に何ユニット入るかを意味します。

よって、カメラ側でアスペクト比を操作しても縦方向に含まれるユニット数は一定であるので、
画面の横半分に入るユニット数は、カメラのSizeとアスペクト比から計算可能です。

アスペクト比はウィンドウの「横幅 ÷ 縦幅」で表されますから、
横幅は「カメラのサイズ(縦ユニット数の半分) × アスペクト比 × 2」で計算できます。

以下のスクリプトを任意のオブジェクトにアタッチすると、
カメラの描画領域に一致した矩形ギズモが表示されます。

GetWorldRegionFromCamera.cs
using UnityEngine;

public class GetWorldRegionFromCamera : MonoBehaviour {

    public float wallWidthHalf { get { return Camera.main.orthographicSize * Camera.main.aspect; } }
    public float wallHeightHalf { get { return Camera.main.orthographicSize; } }

    private void OnDrawGizmos() {
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireCube(Camera.main.transform.position, new Vector3(wallWidthHalf * 2, wallHeightHalf * 2, 0));
    }
}
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?