Unity基础(1)——Transform类的使用

Transform是unity脚本编辑中一个基础且很常见使用的类,供自学记录。

1. 成员变量

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)Translate,⽤来移动物体的函数,⾮常常⽤的⼀个函数。
public void Translate (translation : Vector3, relativeTo : Space = Space.Self) : void
把物体向translation⽅向移动,距离为translation.magnitude。 relativeTo表⽰这个移动的参考坐标系。
public void Translate (x : float, y : float, z : float, relativeTo : Space = Space.Self) : void
同上
public void Translate (translation : Vector3, relativeTo : Transform) : void
如果relativeTo 不是null,则以⽬标物体relativeTo的⾃⾝轴向作为参考坐标系。
public void Translate (x : float, y : float, z : float, relativeTo : Transform) : void
同上
脚本:
var speed=30;
//将物体以30⽶每秒的速度向前移动。
trasform.Translate(Vector3.forward*speed*Time.deltaTime);
 

2)Rotate,⽤来旋转物体的函数,⾮常常⽤,在知道需要旋转的⾓度的情况下。如果要让物体旋转到指定位
置,需要搭配Quaternion来使⽤。
public void Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void
旋转eulerAngles度(3个轴向分别旋转),以relativeTo为参考坐标系
public void Rotate (xAngle : float, yAngle : float, zAngle : float, relativeTo : Space = Space.Self) : void
同上
public void Rotate (axis : Vector3, angle : float, relativeTo : Space = Space.Self) : void
以axis为轴旋转angle度,以relativeTo为参考坐标系


3)RotateAround 让物体以某⼀点为轴⼼成圆周运动。
public void RotateAround (point : Vector3, axis : Vector3, angle : float) : void
让物体以point为中⼼,绕axis为轴向旋转angle度。保持原来与point的距离。
 

4)LookAt 让物体的z轴看向⽬标物体
public void LookAt (target : Transform, worldUp : Vector3 = Vector3.up) : void
让物体的z轴看向target的位置,并以worldUp为y轴指向⽅向。
public void LookAt (worldPosition : Vector3, worldUp : Vector3 = Vector3.up) : void
让物体看向worldPosition


5)TransformDirection
public Vector3 TransformDirection (direction : Vector3) : Vector3
返回以物体⾃⾝为坐标轴的向量direction在世界坐标中的朝向向量。
public Vector3 TransformDirection (x : float, y : float, z : float) : Vector3
同上


6)InverseTransformDirection
public Vector3 InverseTransformDirectionTransformDirection (direction : Vector3) : Vector3
public Vector3 InverseTransformDirectionTransformDirection (x : float, y : float, z : float) : Vector3
与TransformDirection相反,从世界坐标转换到⾃⾝相对坐标。
 

7)TransformPoint
public Vector3 TransformPoint (position : Vector3) : Vector3
public Vector3 TransformPoint (x : float, y : float, z : float) : Vector3
把⼀个点从⾃⾝相对坐标转换到世界坐标


8)InverseTransformPoint
public Vector3  InverseTransformPoint (position : Vector3) : Vector3
public Vector3  InverseTransformPoint (x : float, y : float, z : float) : Vector3
把⼀个点从世界坐标转换到⾃⾝坐标的位置。


9)DetachChildren
public void DetachChildren () : void
把⾃⾝所有的⼦物体的⽗物体都设成世界,也就是跟⾃⼰的所有⼦物体接触⽗⼦关系。
 

10)Find
public Transform Find (name : string) : Transform
找到⼀个名字是name的物体并返回
如果没有找到则返回null。如果字符串被/隔离,函数则会像⽂件路径⼀样逐级下查。
// The magical rotating finger
function Update() {
aFinger = transform.Find("LeftShoulder/Arm/Hand/Finger");
aFinger.Rotate(Time.deltaTime*20, 0, 0);
}


11)IsChildOf
public bool IsChildOf (parent : Transform) : bool
如果物体是parent的⽗⼦层级关系下的⼀员,返回true;
--------------------------------------------------------
作者:MDYmcn1991
链接:https://wenku.baidu.com/view/90f4196130687e21af45b307e87101f69e31fbb3.html
来源:百度文库
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/weixin_44430126/article/details/125613105