上一篇寫了關於Unity中的世界坐標轉換為NGUI中的坐標,這篇來寫一下關於NGUI中的坐標轉換為Unity中的世界坐標,代碼如下:
1 GameObject targetObject = (GameObject)Instantiate(Resources.Load("Model/"+name)); 2 Camera worldcamera = NGUITools.FindCameraForLayer(targetObject.layer); //這里是通過物體的層獲得相應層上的相機
3 Camera guiCamera = NGUITools.FindCameraForLayer(obj.layer); //通過腳本所在物體的層獲得相應層上的相機
4 if (worldcamera == null || guiCamera == null) 5 { 6 return; 7 } 8 Vector3 pos = guiCamera.WorldToScreenPoint(obj.transform.position); //獲取UI界面的屏幕坐標
9 pos.z = 1f;//設置為零時轉換后的pos全為0,屏幕空間的原因,被坑過的我提醒大家,切記要改!
10 pos = worldcamera.ScreenToWorldPoint(pos); //將屏幕坐標轉換為世界坐標
11 pos.y = 0f; 12 targetObject.transform.position = new Vector3(pos.x, pos.y, pos.z); //將修改過的坐標賦給目標物體坐標