物体的位置、旋转和比例。
一、Variables
1、世界坐标系中的位置
public Vector3 position;
2、父对象局部坐标系中的位置
public Vector3 localPosition;
注:1)如果transform没有父对象,则transform.position = transform.localPosition;
2)编辑器上的Position = transform.localPosition。
3、世界坐标系中以欧拉角表示的旋转
eulerAngles
例:transform.eulerAngles = new Vector3(10,10,0);
使用Ramdom.Range(0,360);随机旋转
注 :避免单独设置一个欧拉角轴,因为这将导致偏移和不期望的旋转。eulerAngles.x = 10。
4、父对象局部坐标系中的欧拉角
localEulerAngles
5、对象在世界坐标系中的上方向 (0,1,0)
public Vector3 up;
6、对象在世界坐标系中的右方向(1,0,0)
public Vector3.right;
7、对象在世界坐标系中的前方向 (0,0,1)
public Vector3 forward;
注:编辑器中红:x轴;绿:y轴;蓝:z轴。
8、世界坐标系中以四元数表示的旋转
public Quaternion rotation;
注:Quaternion.identity 代表“无旋转”,对象与世界或父对象完全一致。
例:transform.rotation = Quaternion.identity;
9、父对象局部坐标系中以四元数表示的旋转
public Quaternion localRotation;
注:编辑器上,transform组件上的Rotation即为eulerAngles.
10、父对象局部坐标系中的缩放比例
public Vector3 localScale;
例:transform.localScale += new Vector3(0.1f,0,0); //在x轴上扩大物体0.1个单位。
注:编辑器上,transform组件上的Scale即为localScale。
11、父对象的transform组件
public Transform parent;
注:若没有父对象,则返回null。
12、对象层级关系中根对象的Transform组件
public Transform root;
注:若没有父对象,则返回自身。
parent和root类比目录,root是根目录,parent是父目录。
13、世界坐标系到局部坐标系的变换矩阵(只读)
worldToLocalMatrix
public Matrix4x4 worldToLocalMatrix;
Matrix4x4::一个标准的4x4变换矩阵。
注:如果设置了Shader参数,必须使用Renderer.worldToLocalMatrix替代。[图形学:矩阵变换]
14、局部坐标系到世界坐标系的变换矩阵(只读)
localToWorldMatrix
public Matrix4x4 localToWorldMatrix;
注:如果设置了Shader参数,必须使用Renderer.localToWorldMatrix替代。
15、子孙对象的数量
public int childCount;
注:可用于判断一个物体下是否有子物体。
16、全局缩放比例(只读)[有损缩放]
public Vector3 lossyScale;
注:如果有一个带有缩放的父变换和有任意旋转的子变换,此缩放将有偏差。因此缩放不能正确的表示在3组件的向量,而是一个3x3的矩阵。
二、Public Function
1、按指定的方向和距离平移
public void Translate(Vector3 translation,space relativeTo = Space.Self);
Space:用于操作的坐标空间
Space.World:应用于世界坐标系中的转换。
Space.Self:应用于局部坐标系中的转换。
public void Translate(float x,float y,float z,Space relativeTo = Space.Self);
public void Translate(Vector3 translation,Transform relativeTo);
public void Translate(float x,float y,float z,Transform relativeTo);
2、按指定的欧拉角旋转
public void Rotate(Vector3 eulerAngles,Space relativeTo = Space.Self);
public void Rotate(float xAngle,float yAngle,float zAngle,Space relativeTo = Space.Self);
public void Rotate(Vector3 axis,float angle,Space relativeTo = Space.Self);
3、按给定旋转轴和旋转角度进行旋转
public void RotateAround(Vector3 point,Vector3 axis,float angle);
例:transform.RotateAround(Vector3.zero,Vector3.up,20*Time.deltaTime);
4、旋转使得自身的前方向指向目标的位置
public void LookAt(Transform target,Vvector3 worldUp = Vector3.up);
public void LookAt(Vector3 worldPosition,Vector3 worldUp = Vector3.up);
注:z轴指向target,y轴方向最大限度地指向worldUp方向。
通常被用在Camera上,使得Camera的forward看向目标target。
默认worldUp = Vector3.up。
5、将一个位置从局部坐标系变换到世界坐标系
public Vector3 TransformPoint(Vector3 position);
public Vector3 TransformPoint(float x,float y,float z);
6、将一个位置从世界坐标系变换到局部坐标系
public Vector3 InverseTransformPoint(Vector3 position);
public Vector3 InverseTransformPoint(float x,float y,float z);
7、将一个方向从局部坐标系变换为世界坐标系
public Vector3 TransformDiretion(Vector3 direction);
public Vector3 TransformDirection(float x,float y,float z);
例:Vector3 world_v = transform.TransformDirection(local_v);
与TransformPoint的区别:转换后的向量world_v只与transform的Rotation和向量local_v有关,而与transform的Position和Scale值无关。
8、将一个方向从世界坐标系变换为局部坐标系
public Vector3 InverseTransformDirection(Vector3 direction);
public Vector3 InverseTransformDirection(float x,float y,float z);
9、与所有子物体接触父子关系
public void DetachChildren();
transform.DetachChildren(); Destory(gameObejct); 10、按名称查找子对象public Transform Find(string name);
11、判断是否是指定对象的子对象
public bool IsChildOf(Transform parent);