控制物体位置和物体间的父子关系
public class TransformTest : MonoBehaviour
{
void Start()
{
// 【获取位置】
// 世界坐标中物体的位置
Debug.Log(transform.position);
// 物体相对于父物体的位置
Debug.Log(transform.localPosition);
// 【获取旋转】
// 世界坐标中物体的旋转(四元数)
Debug.Log(transform.rotation);
// 物体相对于父物体的旋转(四元数)
Debug.Log(transform.localRotation);
// 世界坐标中物体的旋转(欧拉角)
Debug.Log(transform.eulerAngles);
// 物体相对于父物体的旋转(欧拉角)
Debug.Log(transform.localEulerAngles);
//【获取缩放】
// 只有相对于父物体的缩放
Debug.Log(transform.localScale);
// 【获取方向向量】
// 前方(Z轴,蓝色)
Debug.Log(transform.forward);
// 右方(X轴,红色)
Debug.Log(transform.right);
// 上方(Y轴,绿色)
Debug.Log(transform.up);
// 父子关系
// 获取父物体
GameObject go = transform.parent.gameObject;
// 获取子物体个数
Debug.Log(transform.childCount);
// 解除所有子物体与该物体之间的父子关系
transform.DetachChildren();
// 获取子物体
// 使用子物体名称
Transform trans = transform.Find("Child");
// 使用子物体索引
trans = transform.GetChild(0);
// 判断一个物体(“Child” -- trans)是不是另一个物体("Sphere" -- transform)的子物体
bool res = trans.IsChildOf(transform);
Debug.Log(res);
// 【建立父子关系】
// 将一个物体(transform)设置成另一个物体(trans)的父物体
trans.SetParent(transform);
}
void Update()
{
// 令物体时时刻刻都看向(0,0,0)点
transform.LookAt(Vector3.zero);
// 【旋转】 物体绕x轴旋转,每帧旋转1度(自转)
transform.Rotate(Vector3.right, 1);
// 【旋转】 物体以y轴,绕 Vector3.zero 旋转,每帧转动5度(公转)
transform.RotateAround(Vector3.zero, Vector3.up, 1);
// 【移动】 以 Vector3.forward 方向,每帧移动0.1f
transform.Translate(Vector3.forward * 0.1f);
}
}