Unity6--缩放、旋转、欧拉角

来源:互联网 发布:马云开创淘宝 编辑:程序博客网 时间:2024/06/05 20:38

一、创建个TransformTest文件

     publicGameObject obj1;

    publicGameObject obj2;

    publicGameObject obj3;

1.void Start () {

       //1.,子类跟着父类走

        //把物体2当做1的子类  -------以都相对于世界坐标中心为参考,

        Debug.Log(obj1 .transform.position);

        Debug.Log(obj2.transform.position);

        //是与父物体为参考坐标系远点的,如果没有父物体,那么就使用世界坐标系

        Debug.Log("obj1LocalPosition" + obj1.transform.localPosition);

        Debug.Log("obj2LocalPosition:" + obj2.transform.localPosition);

 

 //2.缩放

        Debug.Log(obj1.transform.localScale);//父类

        //1.父类Scale 333子类为222,把子类拖出来,单独成一体,那么尺寸就会变成666

        // 2.父类为333  子类也改为33单独拖出来就会变成999

        //3.改变父类的尺寸子类也会相对改变。

        Debug.Log(obj2.transform.localScale);//子类

      

  //2.1单独的全局缩放,本身的大小,父*子类的

        Debug.Log(obj2.transform.lossyScale);//就会显示出单独拖出来时的尺寸,666

 

  //3.旋转-----unity顺序zxy,都会绕着z轴旋转,z是父类

        //四元数---记住这么使用                          --把欧拉角转化成4元数

        Quaternion q =Quaternion.identity;  //默认不旋转

        q.eulerAngles = newVector3(0, 30, 0);//欧拉角,后面括号对应的,绕着Y轴旋转30

        obj3.transform.rotation = q;

  }

void Update () {-------------旋转

     obj3.transform.Rotate(newVector3(0, 30, 0) * Time.deltaTime);//相当于每帧旋转30--Time.deltaTime相当于1/60,会变慢。

    }

二、欧拉角、四元数

创建个EulerAndQuaternion文件:

  //创建按钮,旋转物体--unity里对应Cube里含有Capsule那一组

  //对比,为什么必能直接对欧拉角赋值

  //欧拉角也叫万象解锁

  void OnGUI()                                                                               //创建的按钮程序

    {

        //"Q_X"是用四元数以自身坐标系进行旋转,避免直接用欧拉角--V_X绕着Z轴旋转

        if(GUI.Button(newRect(20,20,100,80), "Q_X"))                  //四元数  //括号分别对应:x值,y值,按钮宽度,高度,20+80

        {

            Quaternion q = Quaternion.identity;

            q.eulerAngles = newVector3(30, 0, 0);

            transform.rotation = q *transform.rotation;

        }

        if (GUI.Button(newRect(20, 105, 100, 80), "Q_Y"))              //105是上面的20+80+空隙5.可整齐排列

        {

            Quaternion q = Quaternion.identity;

            q.eulerAngles = newVector3(0, 30, 0);                             //Y旋转

            transform.rotation = q *transform.rotation;

        }

        if (GUI.Button(newRect(20, 190, 100, 80), "Q_Z"))

        {

            Quaternion q = Quaternion.identity;

            q.eulerAngles = newVector3(0, 0, 30);                              //Z旋转

            transform.rotation = q *transform.rotation;

        }

 

        //这个是直接赋值调用的欧拉角,直接用欧拉角--V_X绕着Z轴旋转

        if (GUI.Button(newRect(125, 20, 100, 80), "V_X"))              //125是上面的x20+100+缝隙得来的

        {

            transform.eulerAngles += newVector3(30, 0, 0);

        }

        if (GUI.Button(newRect(125, 105, 100, 80), "V_Y"))

        {

            transform.eulerAngles += newVector3(0, 30, 0);

        }

        if (GUI.Button(newRect(125, 190, 100, 80), "V_Z"))

        {

            transform.eulerAngles += newVector3(0, 0, 30);

        }

    }




原创粉丝点击