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, 用來移動物體的函數,很是經常使用的一個函數。
把物體向translation方向移動,距離爲translation.magnitude。 relativeTo表示這個移動的參考座標系。
同上
若是relativeTo 不是null, 則以目標物體relativeTo的自身軸向做爲參考座標系。
同上
腳本:
var speed=30;
//將物體以30米每秒的速度向前移動。
trasform.Translate(Vector3.forward*speed*Time.deltaTime);
2)Rotate,用來旋轉物體的函數,很是經常使用,在知道須要旋轉的角度的狀況下。若是要讓物體旋轉到指定位置,須要搭配Quaternion來使用。
旋轉eulerAngles度(3個軸向分別旋轉),以relativeTo爲參考座標系
同上
以axis爲軸旋轉angle度,以relativeTo爲參考座標系
3)RotateAround 讓物體以某一點爲軸心成圓周運動。
讓物體以point爲中心,繞axis爲軸向旋轉angle度。 保持原來與point的距離。
4)LookAt 讓物體的z軸看向目標物體
讓物體的z軸看向target的位置,並以worldUp爲y軸指向方向。
讓物體看向worldPosition
5)TransformDirection
返回以物體自身爲座標軸的向量direction在世界座標中的朝向向量。
同上
6)InverseTransformDirection
與TransformDirection相反,從世界座標轉換到自身相對座標。
7)TransformPoint
把一個點從自身相對座標轉換到世界座標
8)InverseTransformPoint
把一個點從時間座標轉換到自身座標的位置。
9)DetachChildren
把自身全部的子物體的父物體都設成世界,也就是跟本身的全部子物體接觸父子關係。
10)Find
找到一個名字是name的物體並返回
若是沒有找到則返回null。 若是字符串被/隔離,函數則會像文件路徑同樣逐級下查。
// Themagical rotating finger
function Update() {
aFinger = transform.Find("LeftShoulder/Arm/Hand/Finger");
aFinger.Rotate(Time.deltaTime*20,0, 0);
}
11)IsChildOf
若是物體是parent的父子層級關係下的一員,返回true;