今天遇到個問題,要把NGUI的transform坐標(biāo)轉(zhuǎn)成世界坐標(biāo),難住我了可,查了好多資料,總算有點(diǎn)眉目,弄出來和大家分享,其實(shí)發(fā)現(xiàn)NGUI的坐標(biāo)也是三維Vector3的,但是他和世界坐標(biāo)的Vector3的值代表的不一樣。不信大家可以打印出來,看一看。
創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)站定制、成都全網(wǎng)營銷推廣、小程序開發(fā)、微信公眾號開發(fā)、seo優(yōu)化排名服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為火鍋店設(shè)計企業(yè)提供源源不斷的流量和訂單咨詢。public GameObject target; public GameoObject objUi; public void ScreenToWord() { //此原理就是先將UI坐標(biāo)轉(zhuǎn)成屏幕坐標(biāo),在把轉(zhuǎn)成的屏幕坐標(biāo)轉(zhuǎn)成世界坐標(biāo): //targetObject.layer就是移動GameObject對象的Layer層 Camera wordCamera = NGUITools.FindCameraForLayer(target.layer); //objUi.layer就是要轉(zhuǎn)的NGUI的UI; Camera guiCamera = NGUITools.FindCameraForLayer(objUi.layer); if (wordCamera == null || guiCamera == null ) { return; } Vector3 pos = guiCamera.WorldToScreenPoint(objUi.transform.position); pos.z = 1.0f; pos = wordCamera.ScreenToWorldPoint(pos); pos.y = 0.0f; targetObject.transform.position = new Vector3(pos.x, pos.y, pos.z); } 或者 // 獲取按鈕的屏幕坐標(biāo)Vector3 pos = UICamera.currentCamera.WorldToScreenPoint(_button.transform.position); pos.z = 1; pos = Camera.main.ScreenToWorldPoint(pos); _cube.transform.position = new Vector3(pos.x,pos.y,pos.z);
可以根據(jù)自己的東西去改,用倒是么改什么。
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。