using UnityEngine;
/// <summary>
/// カメラを常に指定の画角で映すようにします
/// </summary>
[RequireComponent(typeof(Camera))]
public class CameraAspectFitter : MonoBehaviour
{
[SerializeField] Vector2 size = new Vector2(540f, 960f);
[SerializeField] float pixelPerUnit = 1f;
Camera cameraCache;
void Awake()
{
cameraCache = GetComponent<Camera>();
Fit();
}
void Fit()
{
var isWideAspectThanScreen = size.x / size.y > Screen.width / Screen.height;
var scale = isWideAspectThanScreen ? (size.x / Screen.width) : (size.y / Screen.height);
var fillRatioX = isWideAspectThanScreen ? 1f : (size.x / Screen.width / scale);
var fillRatioY = isWideAspectThanScreen ? (size.y / Screen.height / scale) : 1f;
cameraCache.orthographic = true;
cameraCache.orthographicSize = size.y / 1.92f / pixelPerUnit;
cameraCache.rect = new Rect((1f - fillRatioX) / 2f, (1f - fillRatioY) / 2f, fillRatioX, fillRatioY);
}
#if UNITY_EDITOR
void Update()
{
Fit();
}
#endif
}