Transform组件用来控制物体的方位,旋转和缩放。每个物体都有一个变换组件。变换组件的所有属性都是相对其父物体进行衡量的,如果此物体没有父物体,这些属性则相对于世界坐标进行计算。
5个和位置相关的Vector3类型变量
up:世界坐标的y轴方向
right:世界坐标的x轴方向
forward:世界坐标的z轴方向
position:对象在世界坐标中的位置
localposition:对象相对父节点变换的位置
属性
位置(position):以X、Y、Z坐标系表示变换的位置。
旋转(rotation):表示此变换以X,Y,Z轴为准的旋转程度,以角度为单位。
缩放(scale):沿着X,Y,Z轴缩放此变换。值为”1”时表示原始尺寸(物体最初被导入时的大小)
Transform.Translate 平移
function Translate (translation : Space = Space.Self) : void
移动transform在translation的方向和距离。
简单的说,向某方向移动物体多少距离。
如果relativeTo留空或者设置为Space.Self,移动被应用相对于变换的自身轴。(当在场景视图选择物体时,x、y和z轴显示)如果相对于Space.World 移动被应用相对于世界坐标系统、
transform.Translate(Vector3.forward * Time.deltaTime);
transform.Translate(Vector3.up * Time.deltaTime,Space.World);
function Translate (x : float, y : float, z : float, relativeTo : Space = Space.Self) : void
移动变换由x沿着x轴,y沿着y轴,z沿着z轴。
transform.Translate(0, 0, Time.deltaTime);
transform.Translate(0, Time.deltaTime, 0, Space.World);
function Translate (translation : Vector3, relativeTo : Transform) : void
transform.Translate(Vector3.right * Time.deltaTime, Camera.main.transform);//相对于摄像机每秒1单位向右移动物体
Transform.Rotate 旋转
function Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void
应用一个欧拉角的旋转角度,eulerAngles.z度围绕z轴,eulerAngles.x度围绕x轴,eulerAngles.y度围绕y轴(这样的顺序)。
如果相对于留空或者设置为Space.Self 旋转角度被应用围绕变换的自身轴。(当在场景视图选择物体时,x、y和z轴显示)如果相对于 Space.World 旋转角度被应用围绕世界的x、y、z轴。
transform.Rotate(Vector3.right * Time.deltaTime);
transform.Rotate(Vector3.up * Time.deltaTime, Space.World);
function Rotate (xAngle : float, yAngle : float, zAngle : float, relativeTo : Space = Space.Self) : void
应用一个旋转角度,zAngle度围绕z轴,xAngle度围绕x轴,yAngle度围绕y轴(这样的顺序)。
transform.Rotate(Time.deltaTime, 0, 0);
transform.Rotate(0, Time.deltaTime, 0, Space.World);
function Rotate (axis : Vector3, angle : float, relativeTo : Space = Space.Self) : void
按照angle度围绕axis轴旋转变换。
transform.Rotate(Vector3.right, Time.deltaTime);//围绕x轴每秒1度,慢慢的旋转物体
transform.Rotate(Vector3.up, Time.deltaTime, Space.World);
Transform.RotateAround 围绕旋转
按照angle度通过在世界坐标的point轴旋转物体。
简单的说,按照多少度在世界坐标的某位置轴旋转物体。
gameObject.transform.RotateAround(new Vector3(0, 0, 0), new Vector3(0, 1.0f, 0), Speed * Time.deltaTime * Input.GetAxis("Horizontal"));
该方法有3个参数,第一个是围绕的旋转点,第二个是旋转的法向量,,第三个是旋转的速度。