在 Unity 中,Transform 是一个非常重要的组件,它定义了物体的位置、旋转和缩放,几乎每个 GameObject 都包含一个 Transform 组件。Transform 组件的主要属性如下:
- position
表示物体在世界空间中的位置。可以通过 transform.position 获取和设置。它是一个 Vector3,表示物体在 x、y、z 轴上的位置。
csharp
transform.position = new Vector3(0, 5, 10);
- localPosition
表示物体在其父对象的本地空间中的位置。如果物体没有父对象,则 localPosition 和 position 是相同的。
csharp
transform.localPosition = new Vector3(1, 2, 3);
- rotation
表示物体的旋转(四元数表示)。可以通过 transform.rotation 获取和设置旋转。四元数更适合用于处理3D旋转,以避免万向节锁问题。
csharp
transform.rotation = Quaternion.Euler(0, 90, 0);
- localRotation
表示物体在本地空间中的旋转。如果物体有父对象,这个值会相对于父对象的旋转来计算。
csharp
transform.localRotation = Quaternion.Euler(45, 0, 0);
- eulerAngles
物体的欧拉角表示的旋转。虽然 Unity 内部使用四元数来表示旋转,但欧拉角更直观,尤其是对于简单的旋转操作。
csharp
transform.eulerAngles = new Vector3(0, 180, 0);
- localEulerAngles
表示物体的本地空间中的欧拉角旋转。
csharp
transform.localEulerAngles = new Vector3(30, 60, 90);
- localScale
物体的本地缩放因子。可以通过 transform.localScale 获取和设置。通常是一个 Vector3,表示物体在 x、y、z 轴上的缩放。
csharp
transform.localScale = new Vector3(2, 2, 2);
- parent
获取或设置物体的父对象。通过设置父对象,你可以控制该物体相对于父对象的位置、旋转和缩放。
csharp
transform.parent = someOtherTransform;
- childCount
表示当前物体有多少个子对象。
csharp
int count = transform.childCount;
- SetParent(Transform parent)
设置或更改物体的父对象。如果传入 null,物体将没有父对象。
csharp
transform.SetParent(newParentTransform);
- Translate
用于移动物体,支持世界空间或本地空间。
csharp
transform.Translate(Vector3.forward Time.deltaTime);
- Rotate
用于旋转物体,支持世界空间或本地空间。
csharp
transform.Rotate(Vector3.up, 90);
- LookAt
让物体朝向目标对象。
csharp
transform.LookAt(targetTransform);
通过 Transform 组件,你可以方便地控制游戏对象在场景中的位置、旋转和缩放等各种状态。