世界坐标转到UGUI坐标

来源:互联网 发布:linux您的ip被占用 编辑:程序博客网 时间:2024/05/23 11:49
  1. public static Vector3 WorldToUI(Camera camera,Vector3 pos){  
  2.         CanvasScaler scaler = GameObject.Find("UIRoot").GetComponent<CanvasScaler>();  
  3.   
  4.         float resolutionX = scaler.referenceResolution.x;  
  5.         float resolutionY = scaler.referenceResolution.y;  
  6.   
  7.         Vector3 viewportPos = camera.WorldToViewportPoint(pos);  
  8.   
  9.         Vector3 uiPos = new Vector3(viewportPos.x * resolutionX - resolutionX * 0.5f,  
  10.             viewportPos.y * resolutionY - resolutionY * 0.5f,0);  
  11.   
  12.         return uiPos;  
  13. }  
  14. public static Vector2 WorldToUIPoint(Transform worldGo)  
  15.     {  
  16.         Vector2 pos;  
  17.         RectTransformUtility.ScreenPointToLocalPointInRectangle(canvas.transform as RectTransform,  
  18.             gameCamera.WorldToScreenPoint(worldGo.transform.position), canvas.worldCamera, out pos);  
  19.         RectTransform rect = transform.transform as RectTransform;  
  20. rect.anchoredPosition = pos; 
  21.         return pos;  
  22. }