Unity物体的控制(Transform)

物体transform操作

一、物体数据获取

  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);

      //获取向量
      Debug.Log(transform.forward);
      Debug.Log(transform.right);
      Debug.Log(transform.forward);
      
  }

二、物体数据操作

1.看向原点

void Update()
{
    //看向原点
    transform.LookAt(Vector3.zero);//也可以看向某个物体 transform.LookAt(GameObject.transform)
}

2.沿某一轴自转

 void Update()
 {
     //自转
     transform.Rotate(Vector3.up, 1);//旋转轴,每帧旋转角度
 }

3.围绕某个目标点旋转

void Update()
{
    //围绕某点旋转
    transform.RotateAround(Vector3.zero,Vector3.up,2);//某坐标,旋转轴,速度
}

4.移动

void Update()
{
    //移动
    transform.Translate(Vector3.forward*0.1f);//方向速度
}

三、物体父子关系

  void Start()
  {   
  
      //父子关系
      GameObject parent = transform.parent.gameObject;//获得父级

      Debug.Log(parent.name);//获得父级名称
      Debug.Log(transform.parent.gameObject.name);//获得父级名称

      Debug.Log(transform.childCount);//子物体个数
      Transform trans = transform.Find("Sphere");//通过名称获得子物体
      trans = transform.GetChild(0);通过排序获得子物体

      bool res = trans.IsChildOf(transform);//判断是否存在父子关系
      Debug.Log(res);

      transform.DetachChildren();//与子级解除关系
      res = trans.IsChildOf(transform);//判断是否存在父子关系
      Debug.Log(res);

      trans.SetParent(transform);//绑定父子关系
      res = trans.IsChildOf(transform);//判断是否存在父子关系
      Debug.Log(res);
  }

你可能感兴趣的:(unity,unity,游戏引擎)