组件介绍
属性名 | 作用 |
---|---|
Position | 表示世界坐标/本地坐标 |
Rotation | 表示世界旋转角度/本地旋转角度 |
Scale | 表示缩放 |
在Transform面板上显示的是相对于父物体的变化
子物体世界坐标=子物体本地坐标+父物体的世界坐标
子物体世界旋转=子物体本地旋转+父物体的世界旋转
子物体世界缩放=子物体本地缩放*父物体的世界缩放
常用属性和方法
功能说明 | 使用说明 |
---|---|
坐标 | transform.position(Vector3 pos) (世界坐标) / transfrom.localPosition(Vector3 pos) (本地坐标) |
角度(欧拉角) | transform.eulerAngles(Vector3 pos) (世界欧拉角) / transform.localEulerAngles(Vector3 pos) (本地欧拉⻆) |
角度(四元数) | transform.rotation (世界四元数) / transform.localRotation (本地四元数) |
缩放 | transform.localScale |
方向 | transform.forword (自身前方) / transform.up (自身上方) / transform.right (自身右方) 相反方向只需要加个 " - " 就可以了 |
移动 | transform.Translate(Vector3 translation) / transform.Translate(Vector3 translation, Space relativeTo) translation为移动向量,包括方向和大小,relativeTo参考坐标系空间,默认为Space.Self(本地)Space.World(世界) |
自转 | transform.Rotate(Vecotr3 axis, float angle, Space relativeTo) 其中参数axis为旋转轴方向,参数angle为旋转角度,参数relativeTo为参数坐标系,默认为space.self(本地)Space.World(世界) |
绕某个点和某个轴旋转 | transform.RotateAround(Vector3 point, Vector3 axis, float angle) 其中参数point为参考点坐标,参数axis为旋转轴方向,参数angle为旋转角度此方法的功能使使得GameObject对象绕着point点的axis方向旋转angle度 |
看向某个对象 | transform.LookAt(Transform target) / transform.LookAt(Vector3 worldPosition) / transform.LookAt(Transform target, Vector3 worldup) / transform.LookAt(Vector3 worldPosition, Vector3 worldup) 其中参数target为transform自身坐标系中z轴指向的目标,参数worldup为transform自身坐标系中y轴最大限度指向的方向此方法的功能是使得GameObject对象自身坐标系中的z轴指向target,y轴方向最大限度地指向worldup方向 |
获得根对象 | transform.root 返回的是根对象的位置 |
获得父对象 | transform.parent 返回的是父对象的位置 |
获得子对象 | transform.GetChild(int index) index是子物体的下标,从0开始 |
获得子物体的数量 | transform.childCount 返回的数子物体数量 “int” 型 |
是否是某个对象的子物体 | transform.IsChildOf(Transform patent) 用于判断transform对应的GameObject对象是否为参数parent的子物体,返回值为true的三种情况:A.isChildOf(B):①A和B指向同一对象,②A是B的一级子物体,③A是B的多级子物体 |
设置父物体 | transform.SetParent(Transform patent) patent是父对象的position |
查找对象 | transform.Find(string name) 参数name可以是对象名或者对象路径,相较于Gameobject.Find来说此方法可以查找隐藏对象(若其有父对象,则父对象的Transform组件必须是激活状态) |
位置是否发生了变化 | transform.hasChanged; 返回的是 “bool” 值 |
分离层级关系 | transform.DetachChildren() 使GameObject对象的所有子物体和自身分离层级关系 |
设置物体的层级顺序 | transform.SetSiblingIndex(int index); 参数index是物体要修改的序号 transform.SetAsFirstSibling(); 设置物体为第一个子对象,transform.SetAsLastSibling(); 设置物体为最后一个子物体 |
欧拉角:是物体绕坐标系三个坐标轴(x,y,z轴)的旋转角度
静态欧拉角:绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止
动态欧拉角:绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动
万向锁:对于动态欧拉角,无论heading和bank为多少度,只要pitch为±90°,就会出现万向锁现象
四元素:在计算机图形学中,四元数用于物体的旋转,是一种较为复杂,但是效率较高的旋转方式。其中x,y,z 代表的是向量的三维坐标,w代表的是角度
欧拉角 | 四元数 |
---|---|
三个角度组成,直观,容易理解,可以进行从一个方向到另一个方向旋转大于180度的角度,但是容易产生死锁 | 四元旋转不存在万向节锁问题,存储空间小,计算效率高。但是单个四元数不能表示在任何方向上超过180度的旋转,四元数的数字表示不直观。 |
缩放:当缩放的是父物体,则其子物体也会进行缩放,而目标是子物体则只会影响子物体