Unity3d transfrom组件

转自  https://www.imooc.com/learn/989

一、什么是transform

场景中的每一个物体都有一个transform

用于存储和操作对象的位置,旋转和缩放

存在层级关系(父级、子级)

 

二、常用变量和属性

1.位置

position 世界坐标

localPosition 相对坐标

 

 inspector窗口 position显示的是相对坐标localposition  如果没有父物体则为相对于世界的坐标

2.角度

eulerAngles,localEulerAngles 欧拉角

rotation,localRotation 四元数旋转角度

 

 

 rotation显示的是欧拉角 坐标为90即为旋转90度

 

3.缩放

localScale 相对父级缩放比例

lossyScale 相对世界缩放比例

 

 Scale 显示的是localScale相对父级缩放比例

 

4.其他                             

right,up,forward方向向量 

right 向右 up 向上 forward 向前

parent,root,childCount 子父级相关    

parent 父物体  root根物体   childCount 子物体个数

 

三.移动

1.直接移动

修改tranform.position

    private Transform trans;
    public bool moveToLeft = true;
    private float speed = 2;

    void Start () {
        trans = this.transform;
    }

    void Update () {
        MoveTest();
    }
    //使物体在(-3,3)左右移动
    private void MoveTest()
    {
        if (transform.position.x <= -3 && moveToLeft)
        {
            moveToLeft = false;
        }
        else if (transform.position.x >= 3 && !moveToLeft)
        {
            moveToLeft = true;
        }

        transform.position += (moveToLeft ? Vector3.left : Vector3.right) * Time.deltaTime * speed;
        
    }

 

2.使用Translate函数

 private void Translate()
    {
        if (trans.position.x <= -3 && moveToLeft)
        {
            moveToLeft = false;
        }
        else if (trans.position.x >= 3 && !moveToLeft)
        {
            moveToLeft = true;
        }
        trans.Translate((moveToLeft ? Vector3.left : Vector3.right) * Time.deltaTime * speed,Space.Self);
    }

Translate函数第二个参数 Self沿自身的某一方向移动  World沿世界的某一方向移动

 

四.旋转

1.直接修改欧拉角和旋转角 

void Update () {
        //trans.eulerAngles = new Vector3(0, 0, 45);
        //trans.localEulerAngles = new Vector3(0, 0, 45);

        //trans.rotation = Quaternion.Euler(0, 0, 45);
        //trans.localRotation = Quaternion.Euler(0, 0, 45);

        trans.eulerAngles += Time.deltaTime * speed * Vector3.forward;
        //trans.rotation = Quaternion.Euler(trans.eulerAngles.x, trans.eulerAngles.y, trans.eulerAngles.z + Time.deltaTime * speed);

    }
}

2.几个关于旋转的函数

 

        //绕某一轴进行旋转
        trans.Rotate(Vector3.forward * Time.deltaTime * speed);

        //绕某一物体进行旋转
        trans.RotateAround(target.position, target.up, Time.deltaTime * speed);

        //看向某物体 
        trans.LookAt(target);    

 

 

 

  

 

 

 

 

posted @ 2019-11-05 16:12  An_Wen  阅读(470)  评论(0编辑  收藏  举报