프로젝션 행렬을 이용한 구현.

public class Test : MonoBehaviour
{
    Matrix4x4 originalProjectionMat;

    private void Start()
    {
        originalProjectionMat = Camera.main.projectionMatrix;
    }

    private void CameraShake()
    {
        Matrix4x4 pMat = originalProjectionMat;

        // roll
        pMat.m01 += Mathf.Sin(Time.time * 1.25f) * 0.4f;
        pMat.m10 += Mathf.Sin(Time.time * 1.5f) * 0.4f;

        // x
        pMat.m00 += Mathf.Sin(Time.time * 1.5f) * 0.1f;
        pMat.m11 += Mathf.Sin(Time.time * 1.5f) * 0.1f;

        Camera.main.projectionMatrix = pMat;
    }
    
    private void Update()
    {
        CameraShake();
    }
}

+ Recent posts