屏幕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 (

这篇博客探讨了如何在Unity3d中将2D屏幕坐标转换为3D世界坐标,以及反之。作者强调理解转换矩阵的重要性,并提供了一个使用Unity的ScreenPointToLocalPointInRectangle方法将屏幕坐标转换为Canvas内坐标的示例。该方法适用于Canvas_main,并讨论了在NGUI中可能的不同应用。
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



