一、坐标系
1. 变量
a. Right、Up和Forward
- 分别表示表示物体本身坐标系(local space)的x,y和z方向向量
2. 函数
- 把物体local space坐标转为world space坐标,参数为Vector3或三个float
- 比如把一个cube移到玩家面前两个单位的距离的位置可以这么写
cube.transform.position = player.transform.TransformPoint(0, 0, 2)
- 和TransformPoint()相反,把世界坐标转换成物体的local space
二、位移
1. 变量
a. position
b. localPosition
- 相对父物体的位置,如果没有父物体,则值和position相等
2. 函数
a. translate()
- 物体位置的变换的函数,可以沿某个方向向量移动或像某个点移动
- 可以选择移动是以物体本身坐标系还是世界坐标系
三、旋转
1. 变量
a. eulerAngles
b. localEulerAngles
c. rotation
- 类型是一个四元素Quaternion,是旋转另一种表示
- 和欧拉角旋转相比不会出现万向节锁(gimbal lock)
d. localRotation
2. 函数
a. Rotate()
- 绕某一个向量旋转一定的角度
- 在Update中旋转的角度乘上Time.deltaTime就实现每秒匀速旋转某角度
b. RotateAround()
- 函数有三个参数,第一个是一个点,第二个是一个轴,第三个是旋转角度,就是物体绕某个点的一个轴旋转
- 下面代码就表示物体绕一条垂直于坐标原点的轴以每秒20度的转速旋转
transform.RotateAround(Vector3.zero, Vector3.up, 20 * Time.deltaTime)
c. LookAt()
- 用于一个物体的z轴一直向着某个物体
- 有两个参数,第一个是被朝向的物体的坐标,第二个是看的物体以哪个向量方向朝上,默认是物体的本身的up朝上
d. Quaternion.RotateTowards()
- 这个函数不是在Transform里面的,是四元素Quaternion的函数,有三个参数第一个是当前的旋转姿态,第二个是想要的旋转姿态,这两个旋转姿态都是用四元素Quaternion表示的,第三个参数是旋转速度
- 这个函数是有返回值的,返回的是旋转的姿态,把返回值赋给transform.rotation,下面是一个旋转的例子
transform.rotation = Quaternion.RotateTowards(
transform.rotation,
target.rotation,
speed * Time.deltaTime
)
四、缩放
1. 变量
a. lossyScale
- 只读变量
- 引用官方解释:如果你有一个会缩放的父物体和会任意旋转的子物体,物体的缩放将有偏差。因此缩放不能用3个向量正确地表示,只能用一个3x3矩阵表示。这样的表示使用起来非常不方便,lossyScale是个很方便的属性,它尽量匹配实际世界的缩放,如果你的物体不是斜的,这个值将是完全正确的,如果物体是斜的,这个值也不会有很大的不同。
b. localScale
五、位置关系
1. 变量
a. parent
- 物体的父物体,如果修改了该值,物体的坐标、大小和旋转都会变成相对于父物体的值,不过相对于世界这些值都不会变
b. root
- 返回物体的最顶层的父物体,如果物体没有父物体,则值为物体本身
childCount
2. 函数
a. Find()
- 利用反射查找某个子物体,参数是字符串,表示物体的层级
- 返回Transform类
b. IsChildOf()
c. DetachChildren()
- 删掉和所有子物体的父子关系,把它们变会一个个独立物体
d. GetChild()
- 参数是一个整形的index,表示child的位置,index的值小于childCount
e. GetSiblingIndex()