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
示例:右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就是中心物体):
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) ;