屏幕2d转3d,或者3d的呈现
关键就是计算屏幕和镜头的距离,
别人的代码:
if (m_evalMode == EvalMode.CameraDistance)
{
Vector3 v3WorldCenter = transform.TransformPoint(m_localCenter.x, m_localCenter.y, m_localCenter.z);
fDistanceToCamera = Vector3.Distance(v3WorldCenter, currentCamera.transform.position);
}
else if(m_evalMode == EvalMode.ScreenCoverage)
{
fScreenCoverage = ComputeScreenCoverage(currentCamera);
}
根据世界坐标,转换成UI屏幕坐标
在经历过shader各种坐标转换和矩阵转置后,一切都相对容易
最好能自己推理各种矩阵,则能更好理解
Vector3 TransformFromWorldToUI(Vector3 worldPos, Camera mainCamera, Camera uiCamera,RectTransform parentRectTransform)
{
if (mainCamera==null || uiCamera==null || parentRectTransform==null)
{
return Vector3.zero