在Unity中,Transform是所有游戏对象(GameObject)都具备的组件之一,它包含了游戏对象的位置、旋转和缩放等信息。下面是Transform的一些基础认知:
位置(Position):指游戏对象相对于世界坐标系的位置。
旋转(Rotation):指游戏对象相对于世界坐标系的旋转角度。在Unity中,旋转采用四元数(Quaternion)表示。
缩放(Scale):指游戏对象的大小比例。缩放值为1表示原大小,小于1表示缩小,大于1表示放大。
通过Transform组件,可以对游戏对象进行移动、旋转和缩放等操作,也可以获取它们在世界坐标系中的位置、旋转和缩放信息。需要注意的是,Transform的操作是相对的,即移动、旋转和缩放都是在当前对象坐标系下进行的,而非在世界坐标系下。
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:全局缩放比例(只读)。
Transform类的常用的公共函数(方法):
1.Translate函数
Translate 方法用于根据 translation
的方向和距离移动变换。它的语法如下:
public void Translate(Vector3 translation)
public void Translate(Vector3 translation,Space relative To=Space.Self)
沿着translation方向移动translation向量长度的距离,如果relativeTo留空或者设置为Space.Self,移动被应用相对于自身坐标系;
具体而言,Translate方法将在对象本地坐标系中按 X、Y 和 Z 轴分别移动指定的距离。向量 translation 指定了沿着这三个轴的位移矢量,即 translation.x 为 X 轴上的位移量,translation.y 为 Y 轴上的位移量,translation.z 为 Z 轴上的位移量。
这是一个简单的示例,演示如何使用 Translate方法:
这段代码其实就相当于物体在坐标系内沿z轴方向移动一个单位,相当于以下代码:
在常规的项目,经常会用到Vector3.forward,其中Vector3.forward是一个常量,表示向量(0,0,1),即指向z轴正方向的向量,也可以在Unity中使用其实现一些常见的方向操作,例如上述代码就可以表示为:
这会使对象在z 轴上以 speed 的速度移动。
此外,Vector3.right 表示 (1, 0, 0) 向量,向右;Vector3.up 表示 (0, 1, 0) 向上;Vector3.back 表示 (-1, 0, 0) 向左;Vector3.down 表示 (0, -1, 0) 向下。