目录
在 Unity 开发中,Transform 组件是每个游戏物体都必备的重要组件。以下将详细介绍其相关知识及代码示例。
一、Transform 组件的基本概念
(一)与游戏物体父子关系的关联
游戏物体之间可以存在父子关系,而真正维持这种父子关系的是 Transform 组件,并非 GameObject 类本身。当有父子关系形成后,控制父物体时,子物体也会受到影响。
二、在脚本中获取和控制 Transform 组件
(一)获取组件
在脚本中获取 Transform 组件很简单,直接使用transform就可以拿到对应的组件。
(二)位置相关
- 获取位置的方法
- 有
position和localPosition两种获取位置的方法。 position代表物体在世界当中的位置。localPosition代表物体相对于父体的位置,是一个相对位置。
- 有
using UnityEngine;
public class TransformTest : MonoBehaviour
{
void Start()
{
Debug.Log(transform.position);
Debug.Log(transform.localPosition);
}
}
(三)旋转相关
- 表示方式
rotation是一个四元数,position和localPosition是Vector3类型。除了rotation,还有localRotation。- 旋转有四元素和欧拉角两种表示方式,并且都有相对于世界和相对于本地的情况。
- 获取欧拉角度后就是一个
Vector3,代表xyz三个轴向的旋转。
using UnityEngine;
public class TransformTest : MonoBehaviour
{
void Start()
{
Debug.Log(transform.rotation);
Debug.Log(transform.localRotation);
Vector3 eulerAngles = transform.eulerAngles;
Debug.Log(eulerAngles);
}
}
(四)缩放相关
缩放只有相对于父体的缩放,通过transform获取相关信息。
(五)物体方向向量相关
- 获取向量
- 物体的前方可以通过
transform.forward获取,右方通过transform.right获取,上方通过transform.up获取,这相当于获取了三个轴对应的向量。
- 物体的前方可以通过
using UnityEngine;
public class TransformTest : MonoBehaviour
{
void Start()
{
Debug.Log(transform.forward);
Debug.Log(transform.right);
Debug.Log(transform.up);
}
}
(六)常用方法
- 物体看向某点
- 使用
transform.LookAt方法可以让物体看向指定点,例如让物体看向原点:transform.LookAt(Vector3.zero)。
- 使用
- 物体旋转
- 绕轴旋转可以使用
transform.Rotate方法,比如绕up轴每一帧旋转 1 度:transform.Rotate(Vector3.up * Time.deltaTime)。 - 绕某个物体旋转使用
transform.RotateAround方法,传绕的点、轴和速度等参数,例如绕原点的up轴每一帧旋转 5 度:transform.RotateAround(Vector3.zero, Vector3.up, 5 * Time.deltaTime)。
- 绕轴旋转可以使用
- 物体移动
- 使用
transform.Translate方法进行移动,例如向前方移动:transform.Translate(Vector3.forward * 0.1f)。
- 使用
(七)父子关系控制相关
- 获取父物体和子物体信息
- 获取当前物体的父物体可以使用
transform.parent获取父物体的Transform组件,使用transform.parent.gameObject获取父物体的GameObject。 - 获取子物体个数使用
transform.childCount。
- 获取当前物体的父物体可以使用
- 解除父子关系与获取子物体
- 解除与子物体的父子关系使用
transform.DetachChildren。 - 获取子物体可以通过
transform.Find根据子物体名称查找,或者通过transform.GetChild根据索引获取。还可以通过transform.IsChildOf判断一个物体是否是另一个物体的子物体。 - 设置父物体可以使用
transform.SetParent方法,例如transform.SetParent(otherTransform)可以将当前物体的父物体设置为otherTransform对应的物体。
- 解除与子物体的父子关系使用
Transform 组件在 Unity 开发中对于控制物体的位置、旋转、缩放以及父子关系起着至关重要的作用,熟练掌握其用法是进行游戏开发的基础。
833

被折叠的 条评论
为什么被折叠?



