Unity中的世界座標和NGUI中的座標的相互轉換

2021-09-06 20:49:38 字數 1599 閱讀 2395

public gameobject targetobject;         //目標物體

public camera worldcamera;         //世界相機。

public camera guicamera;           //ui相機

// use this for initialization

void start()

worldcamera =nguitools.findcameraforlayer(targetobject.layer);     //這裡是通過物體的層獲得相應層上的相機

guicamera = nguitools.findcameraforlayer(this.gameobject.layer);   //通過指令碼所在物體的層獲得相應層上的相機

// update is called once per frame

void update()

void lateupdate()

vector3 pos = worldcamera.worldtoscreenpoint(targetobject.transform.position);         //獲取目標物體的螢幕座標

pos = guicamera.screentoworldpoint(pos);                              //將螢幕座標轉換為ui的世界座標

pos.z = 0;                                //由於ngui 2d介面的z軸都為0

transform.position =new vector3(pos.x,pos.y,pos.z);      //將修改過的座標賦給ui介面

2、將ngui的座標改為unity中的世界座標,**如下所示:

gameobject targetobject = (gameobject)instantiate(resources.load("model/"+name));

camera worldcamera = nguitools.findcameraforlayer(targetobject.layer);     //這裡是通過物體的層獲得相應層上的相機

camera guicamera = nguitools.findcameraforlayer(obj.layer);   //通過指令碼所在物體的層獲得相應層上的相機

if (worldcamera == null || guicamera == null)

return;

vector3 pos = guicamera.worldtoscreenpoint(obj.transform.position);         //獲取ui介面的螢幕座標

pos.z = 1f;//設定為零時轉換後的pos全為0,螢幕空間的原因,被坑過的我提醒大家,切記要改!

pos = worldcamera.screentoworldpoint(pos);                              //將螢幕座標轉換為世界座標

pos.y = 0f;

targetobject.transform.position = new vector3(pos.x, pos.y, pos.z);      //將修改過的座標賦給目標物體座標

unity中螢幕和世界座標系區別

螢幕座標系是這個 o x軸 vy軸 通常在使用原生gui繪製時要考慮,這些gui元件不屬於編輯器中的物體,繪製時並不會參加物體的深度計算等操作,等到物體繪製完它才最後繪製到螢幕。世界座標系是這個 y軸 o x軸 能在編輯器看到的都是使用世界座標,例如ngui ugui這些雖然是ui元件,但其實都是編...

關於Unity中的世界座標和區域性座標

1.物體的區域性座標的方向 物體自身的方向 transform.forward transform.right transform.up 2.物體的世界座標的方向 vector3.forward vector3.right vector3.up 例子 子彈沿自身座標軸的z軸方向運動 vector3 ...

Unity 世界座標與本地座標

你在物體元件上看到的就是本地座標,是相對于父物體的座標。在 中用transform.position獲得的是世界座標,所以不一定等於你在元件上看到的值。transform.rotation的旋轉值範圍為 1 1 對應著 180 180 transform.rotation值是float型別的,當你想...