unity Transform類

Transform 變換,是場景中最常打交道的類,用於控制物體的位移,旋轉,縮放等功能。app

Transform函數

Class, inherits from Component, IEnumerableoop

Position, rotation and scale of an object.spa

控制物體的位置,旋轉和縮放。pwa

Every object in a scene has a Transform. It's used to store and manipulate the position, rotation and scale of the object. Every Transform can have a parent, which allows you to apply position, rotation and scale hierachically. This is the hierarchy seen in the Hierarchy pane. They also support enumerators so you can loop through children using:orm

// Movesall transform children 10 units upwards!
for (var child: Transformin transform) {
child.position += Vector3.up *10.0;
}
ip


每個場景中的物體都有Transform這個類,他是用來儲存和處理物體的位移,旋轉和縮放的。每個Transform均可以有一個父物體,這可讓你獲得下游節點的位移旋轉和縮放。這個層次結構關係能夠從Hierarchy面板中看到。他還支持enumerators,以使用循環來遍尋全部的子節點。字符串

Variablesget


position: Vector3  物體在世界座標中的位置。 transform.position=Vector3(10,10,10)//把物體放到(x=10,y=10,z=10)的位置string


localPosition: Vector3  相對位置,或自身位置,物體相對於父物體的位置。


eulerAngles: Vector3  軸向旋轉角度,相對於世界座標。單位爲度(°)


localPosition: Vector3 相對軸向旋轉角度,或自身的旋轉角度,物體相對於父物體的旋轉。通常使用和處理物體的旋轉角度時都會使用到這個數值。


right: Vector3  物體自身的紅色軸向(X軸)在世界座標中所指向的位置。注意在maya中x軸指向物體的左邊,而unity中的x軸則指向物體的右邊。rigidbody.velotity=transform.right*moveSpeed;//向物體的右側以moveSpeed的速度移動


up: Vector3  物體自身的綠色軸向(Y軸)在世界座標中所指向的位置。


forward: Vector3  物體自身的藍色軸向(Z軸)在世界座標中所指向的位置。


rotation: Quaternion  以四元數來表達的物體自身的旋轉。四元數能夠快速的處理物體的旋轉方向的計算,搭配Quaternion能夠用來計算各類須要的旋轉方案。具體應用方法參見Quaternion篇


localRotation: Quaternion 相對於父物體的用四元數來表達的旋轉。


localScale: Vector3 物體相對於父物體的縮放


parent: Transform 物體的父物體。 若是沒有則返回null。 若是改變父物體的位置,旋轉和縮放,會同時影響並改變子物體的位置,旋轉和縮放,可是保持相對位置,相對旋轉和相對縮放。


worldToLocalMatrix: Matrix4x4 一個表達從世界座標到相對座標位置的四維矩陣,Read Only。 若是你對矩陣不是很瞭解,請使用Transform.InverseTransformPoint。


LocalToWorldMatrix: Matrix4x4 一個表達從相對座標到世界座標位置的四維矩陣,Read Only。 若是你對矩陣不是很瞭解,請使用Transform.TransformPoint。


root: Transform  返回物體的最高層的父物體。若是物體自己就是最高層,則返回物體自己。


childCount: Int   返回物體的子物體數量。


lossyScale:Vector3 返回物體相對於世界座標的縮放值。 Read Only。沒什麼用的一個屬性,當子物體被旋轉後也不是特別精確,也不推薦你們用。若是想要計算物體的世界座標縮放,最好本身寫計算公式。



Functions

1)Translate, 用來移動物體的函數,很是經常使用的一個函數。

function Translate (translation : Vector3, relativeTo : Space = Space.Self) : void

把物體向translation方向移動,距離爲translation.magnitude。 relativeTo表示這個移動的參考座標系。

function Translate (x : float, y : float, z : float, relativeTo : Space = Space.Self) : void

同上

function Translate (translation : Vector3, relativeTo : Transform) : void

若是relativeTo 不是null, 則以目標物體relativeTo的自身軸向做爲參考座標系。

function Translate (x : float, y : float, z : float, relativeTo : Transform) : void

同上


腳本:

var speed=30;


//將物體以30米每秒的速度向前移動。

trasform.Translate(Vector3.forward*speed*Time.deltaTime);



2)Rotate,用來旋轉物體的函數,很是經常使用,在知道須要旋轉的角度的狀況下。若是要讓物體旋轉到指定位置,須要搭配Quaternion來使用。

function Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void

旋轉eulerAngles度(3個軸向分別旋轉),以relativeTo爲參考座標系

function Rotate (xAngle : float, yAngle : float, zAngle : float, relativeTo : Space = Space.Self) : void

同上

function Rotate (axis : Vector3, angle : float, relativeTo : Space = Space.Self) : void

以axis爲軸旋轉angle度,以relativeTo爲參考座標系


3)RotateAround 讓物體以某一點爲軸心成圓周運動。

function RotateAround (point : Vector3, axis : Vector3, angle : float) : void

讓物體以point爲中心,繞axis爲軸向旋轉angle度。 保持原來與point的距離。


4)LookAt 讓物體的z軸看向目標物體

function LookAt (target : Transform, worldUp : Vector3 = Vector3.up) : void

讓物體的z軸看向target的位置,並以worldUp爲y軸指向方向。

function LookAt (worldPosition : Vector3, worldUp : Vector3 = Vector3.up) : void

讓物體看向worldPosition

5)TransformDirection

function TransformDirection (direction : Vector3) : Vector3

返回以物體自身爲座標軸的向量direction在世界座標中的朝向向量。

function TransformDirection (x : float, y : float, z : float) : Vector3

同上

6)InverseTransformDirection

function InverseTransformDirection (direction : Vector3) : Vector3

function InverseTransformDirection (x : float, y : float, z : float) : Vector3

與TransformDirection相反,從世界座標轉換到自身相對座標。


7)TransformPoint

function TransformPoint (position : Vector3) : Vector3

function TransformPoint (x : float, y : float, z : float) : Vector3

把一個點從自身相對座標轉換到世界座標

8)InverseTransformPoint

function InverseTransformPoint (position : Vector3) : Vector3

function InverseTransformPoint (x : float, y : float, z : float) : Vector3

把一個點從時間座標轉換到自身座標的位置。

9)DetachChildren

function DetachChildren () : void

把自身全部的子物體的父物體都設成世界,也就是跟本身的全部子物體接觸父子關係。


10)Find

function Find (name : string) : Transform

找到一個名字是name的物體並返回

若是沒有找到則返回null。 若是字符串被/隔離,函數則會像文件路徑同樣逐級下查。


// Themagical rotating finger
function Update() {
aFinger = transform.Find("LeftShoulder/Arm/Hand/Finger");
aFinger.Rotate(Time.deltaTime*20,0, 0);
}


11)IsChildOf

function IsChildOf (parent : Transform) : bool

若是物體是parent的父子層級關係下的一員,返回true;

相關文章
相關標籤/搜索