using UnityEngine;
public class FillQuadToScreen : MonoBehaviour
{
[SerializeField] private Camera m_camera = null;
[SerializeField] private float m_distance = 1f;
private Transform m_transform = null;
private Transform m_cameraTransform = null;
private void Awake()
{
m_transform = this.transform;
m_cameraTransform = m_camera.transform;
}
private void Update()
{
float pos = (m_camera.nearClipPlane + m_distance);
m_transform.position = m_cameraTransform.position + m_cameraTransform.forward * pos;
m_transform.LookAt(m_camera.transform);
m_transform.Rotate(0, 180, 0);
Vector3 dist = m_transform.position - m_camera.transform.position;
float h = 2.0f * dist.magnitude * Mathf.Tan(m_camera.fieldOfView * 0.5f * Mathf.Deg2Rad);
float w = h * (Screen.width / (float)Screen.height);
m_transform.localScale = new Vector3(w, h, 1);
}
}
이 스크립트를 Quad의 GameObject에 붙여서 카메라 연결.
이 스크립트 일반적인 용도는 Quad를 배경으로 깔고 싶을때 사용. m_distance의 값을 카메라의 farClipPlane에 가깝게 주면 배경처럼 보이는 효과가 됨.
https://gist.github.com/Stiner/62154dd964a1e6dc9f36c84ed24150fd