Transform维持物体之间的父子级
获取位置
获取世界空间中的位置: transform.position
相对父物体位置: transform.localPosition
获取旋转
获取物体在世界空间旋转值(四元素):transform.rotation
获取物体相对父物体旋转值(四元素):transform.localRotation
获取物体在世界空间旋转值(Euler 度为单位): transform.eulerAngles
获取物体相对父物体旋转值(Euler 度为单位): transform.localEulerAngles
获取缩放
获取物体相对父物体缩放比: transform.localScale
向量
前方(Z轴方向):transform.forward
右方(X轴方向):transform.right
上方(Y轴方向):transform.up
父子关系
父物体: transform.parent.gameObject
子物体数量: transform.childCount
通过子物体名称找子物体: transform.Find("childObjName").gameObject
通过索引位置找子物体: transform.GetChild(0).gameObject
常用方法
在 Update() 方法中调用
- 时刻看向指定位置
transform.LookAt(Vector3.zero)
- 旋转
按自身Y轴方向,每侦1度进行旋转(自转):transform.Rotate(Vector3.up,1)
- 围绕某个物体旋转
围绕某个物体旋转(世界坐标(0,0,0)的点的Y轴): transform.RotateAround(Vector3.zero,Vector3.up,5)
- 移动
移动(每一侦向前移动0.1): transform.Translate(Vector3.forward*0.1f)
实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class TransformTest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
//获取位置
Debug.Log(transform.position);//世界位置
Debug.Log(transform.localPosition);//相对父物体位置
//获取旋转
Debug.Log(transform.rotation);//在世界空间旋转值(四元素)
Debug.Log(transform.localRotation);//相对父物体旋转值(四元素)
Debug.Log(transform.eulerAngles);//在世界空间旋转值(Euler 度为单位)
Debug.Log(transform.localEulerAngles);//相对父物体旋转值(Euler 度为单位)
//获取缩放
Debug.Log(transform.localScale);//相对父物体缩放比
//向量
Debug.Log(transform.forward);//前方(Z轴方向)
Debug.Log(transform.right);//右方(X轴方向)
Debug.Log(transform.up);//上方(Y轴方向)
//父子关系
GameObject parentObj = transform.parent.gameObject;//父物体
Debug.Log(transform.childCount);//子物体数量
//transform.DetachChildren();//解除与子物体的父子关系
GameObject childObj = transform.Find("childObjName").gameObject;//通过子物体名称找子物体
childObj = transform.GetChild(0).gameObject;//通过索引位置找子物体
}
// Update is called once per frame
void Update()
{
//时刻看向指定位置(0,0,0)
transform.LookAt(Vector3.zero);
//旋转
transform.Rotate(Vector3.up,1);
//围绕某个物体旋转(世界坐标(0,0,0)的点的Y轴)
transform.RotateAround(Vector3.zero,Vector3.up,5);
//移动(每一侦向前移动0.1)
transform.Translate(Vector3.forward*0.1f);
}
}