1. 程式人生 > >C#中Transform類的介紹

C#中Transform類的介紹

主要用於物體的旋轉移動和縮放
一、成員變數
position:在世界空間座標transform的位置。
localPosition:相對於父級的變換的位置。如果該變換沒有父級,那麼等同於Transform.position。
eulerAngles:世界座標系中的旋轉(尤拉角)。
localEulerAngles:相對於父級的變換旋轉角度。
right:世界座標系中的右方向。(世界空間座標變換的紅色軸。也就是x軸。)
up:世界座標系中的上方向。(在世界空間座標變換的綠色軸。也就是y軸。)
forward:世界座標系中的前方向。(在世界空間座標變換的藍色軸。也就是z軸。)
rotation:世界座標系中的旋轉(四元數)。
localRotation:相對於父級的變換旋轉角度。
localScale:相對於父級的縮放比例。
parent:父物件Transform元件。
worldToLocalMatrix:矩陣變換的點從世界座標轉為自身座標(只讀)。
localToWorldMatrix:矩陣變換的點從自身座標轉為世界座標(只讀)。
root:物件層級關係中的根物件的Transform元件。
childCount:子物件數量。
lossyScale:全域性縮放比例(只讀)。
二、成員函式:
1、LookAt函式
public void LookAt(Transform target)
public void LookAt(Vector3 worldPosition);
public void LookAt(Vector3 worldPosition, Vector3 worldUp = Vector3.up);
public void LookAt(Transform target, Vector3 worldUp = Vector3.up);
旋轉物體,使物體的z軸指向target/worldPosition,對於worldUp的描述是,在完成上面的旋轉之後,繼續旋轉自身,使得當前物件的正y軸朝向與worldUp所指向的朝向一致。
這裡的朝向一致指的是新旋轉後的y軸與worldUp在該物件初次旋轉後的xy平面上的投影向量一致。之所以取投影是因為第一次旋轉使物體的z軸指向target/worldPosition後,此時的worldUp向量可能不在xy平面上,要在z軸指向target/worldPosition前提下是y軸朝向與worldUp一致,只能取worldUp在xy平面上的投影。
注意:使用worldPosition向量時要注意方向,一定是target-transform.position,順序反了會使物體背向目標;若使用Transform作為引數,則不必注意。預設情況下,worldUp是Vector3.up(世界座標系下的y軸)
2、Rotate函式

public void Rotate(Vector3 eulerAngles);
public void Rotate(Vector3 eulerAngles, Space relativeTo = Space.Self);
public void Rotate(float xAngle, float yAngle, float zAngle);
public void Rotate(float xAngle, float yAngle, float zAngle, Space relativeTo = Space.Self);
旋轉一個尤拉角度,它按照zxy的順序進行旋轉,預設情況下區域性座標系下Space.Self

public void Rotate(Vector3 axis, float angle);
public void Rotate(Vector3 axis, float angle,Space relativeTo = Space.Self);
繞axis軸旋轉angle角度,預設情況下區域性座標系下Space.Self。
transform.rotation和Rotate有個區別:
Rotate()方法是:旋轉多少度。在原有的基礎上累加,即旋轉了多少角度。又旋轉了多少角度,是在原有的基礎上在旋轉
rotation屬性是:旋轉到某個角度,就是是在update中每幀都執行。但每次旋轉到的角度都是5,所以是旋轉到5度。一直都是
比如你只想讓他旋轉到多少, 用rotation; 假如想讓他一直轉,可以用Rotate
rotation直接改變了數值, 以達到旋轉效果
Rotate應用一個的旋轉角度每秒1度慢慢的旋轉物體
當然:rotation()還可以通過插值旋轉
在這裡插入圖片描述


在這裡插入圖片描述