Unity基础知识、Transform类

Transform类

1)本类中的属性

-parent:

获取当前游戏对象的父对象的Transform

Transform fourTrans = transform.parent;

transform.SetParent (Cube):  将挂脚本的当前对象设为Cube的父物体

transform.SetParent (null):  取消父物体,解除父子关系!

-root:

获取当前游戏对象的根对象的Transform

Transform  rootTrans  =  transform.root;

print("获444的祖先的名字" + rootTrans.name);

-localPosition:

不带local是世界坐标系中的位置,local相对于父物体的位置,无父,就是世界

-GetInstanceID:

获取当前游戏对象的id (唯一的)

print("实例id" + transform.GetInstanceID());

-childCount:

获取子对象的个数(然后遍历)

int count = transform.childCount;

print("获取111下面子对象的个数"+count);

for (int i = 0; i < count; i++)

2)本类中的方法:

GetChild( int index ):获取指定索引值的Game0bject,

IsChild0f () :判断是否是指定对象的子对象

Find():查找对象

Translate() :按指定方向和位置进行移动,默认是自身坐标系

Rotate() :按指定角度进行旋转

LookAt() :使当前对象朝向(看向)目标位

位移Translate   

上下Y轴 up down   

左右X轴 left down   

前后Z轴 forward back

Unity基础知识、Transform类示例:右vector3.right (100)  前v3.forward(001)

MoveToward 匀速移动    (当前的位置,目标位置,最大移动距离)

transform.position = Vector3.MoveToWard(transform.position,Cube.position,1)

Vector3.Lerp 插值移动 0.1 ,插值移动,速度越来越慢

Vector3.Lerp(transform.position,Cube.position,2)

旋转 Rotate

transform.Rotate(Vector3.up * Time.deltaTime * speed);

transform.Rotate(Time.deltaTime * speed,0,0);//或者可以这么写等于(x,0,0,)

Transform.rotation = Quaternion.AngleAxis(45.Vector3.up)

Transform.rotation = Quaternion.Euler(45,45,0);

欧拉角旋转,x转到90,yz会产生万向节死锁:

Transform.eulerAngles = new Vector(45,45,0);

物体围绕中心物体转动:(Xin就是中心物体):

Unity基础知识、Transform类

transform.RotateAround(Xin.transform.position,Xin.transform.up, 5);

Slerp 插值旋转 了解即可 计算较为复杂 求得插值改变自身rotation

transform.rotation = Quaternion.Slerp(transform.rotation,Cube.rotation,0.5f);

LookRotation  指向旋转 需要的参数是方向

transform.Rotation = Quaternion.LookRotation(Spere.position-transform. position);

我看向球,所以方向是球-我

坐标系的转换  

Vector3 v = newVector3(1,5,8);

世界坐标系:Unity中世界坐标为原点

自身坐标系:自身所在的点为原点,和世界坐标无关

自身转世界(位置)  transform. TransformPoint(v) ;

自身转世界(方向)  transform. TransformDirection(v) ;

自身转世界(向量)  transform. TransformVector(v) ;

世界转自身:

transform.InverseTransformPoint (v) ;

transform.InverseTransformDirection(v) ;

transform.InverseTransformVector(v) ;

上一篇:Unity人员始终面对摄像机


下一篇:UNITY动态加载预制体