2021년 10월 11일 월요일

Quad를 Camera의 Frustum 내에 맞추는 스크립트

using UnityEngine;

public class FillQuadToScreen : MonoBehaviour
{
    [SerializeFieldprivate Camera m_camera = null;
    [SerializeFieldprivate 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(01800);

        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(wh1);
    }
}

 이 스크립트를 Quad의 GameObject에 붙여서 카메라 연결.

 이 스크립트 일반적인 용도는 Quad를 배경으로 깔고 싶을때 사용. m_distance의 값을 카메라의 farClipPlane에 가깝게 주면 배경처럼 보이는 효과가 됨.

https://gist.github.com/Stiner/62154dd964a1e6dc9f36c84ed24150fd

댓글 없음:

댓글 쓰기