首先本文参考了https://blog.youkuaiyun.com/jbl20078/article/details/78401664,感谢博主的奉献
对于UGUI坐标与世界坐标系的转换,由于都是以渲染到屏幕上,故以屏幕坐标为桥梁转换。
要使UI物体跟随3D物体,首先应该考虑的是:UI物体的坐标要跟随3D物体的坐标,所以要把3D物体的坐标赋值给UI物体,但由于两者都处理于不同坐标系与不同的摄像机(同一摄像机下就不用讲了,直接来)渲染下,要如何赋值呢?这里就要用到屏幕坐标来转。
//世界坐标转成UI中父节点的坐标, 并设置子节点的位置
public void World2UI(Vector3 wpos, RectTransform uiParent, RectTransform uiTarget){
, Vector3 spos = m_sceneCamera.WorldToScreenPoint(wpos);
m_tempV2.Set(spos.x, spos.y);
Vector2 retPos;
RectTransformUtility.ScreenPointToLocalPointInRectangle(uiParent, m_tempV2, m_uiCamera, out retPos);
uiTarget.anchoredPosition = retPos;
}
讲下,这里遇到到的大坑是对于摄像机的:
首先是取得3D物体的坐标屏幕坐标&