Unity入门操作_Transform组件_003

来源:互联网 发布:做知敬畏守底线的教师 编辑:程序博客网 时间:2024/06/11 21:01

Transform的组件有:


position:位置

localPosition

        Debug.Log("获取状态:" + cubeObj.activeSelf);
        Debug.Log("Hirearchy:" + cubeObj.activeInHierarchy);
        cubeObj.SetActive(true);
        Debug.Log("获取状态:" + cubeObj.activeSelf);
        Debug.Log("Hirearchy:" + cubeObj.activeInHierarchy);

让游戏对象移动

public class CrossTest : MonoBehaviour {
    public GameObject obj1;
    public GameObject obj2;
    // Use this for initialization
    void Start () {
        Vector3 retVec = Vector3.Cross(obj1.transform.position(起始位置),obj2.transform.position(终止位置);
        Debug.Log(retVec(移动速度));
    }


    void Test03()
    {
         player.transform.position = Vector3.MoveTowards(player.transform.position,end.transform.position,0.1f);
    }

    // Update is called once per frame
    void Update () {

}

让对象旋转

void Update () {
        obj3.transform.Rotate(new Vector3(0,30(角度,和时间配合就是角速率),0)*Time.deltaTime(时间));
    }

模拟日出:思路是先生成脚本建立三个对象和一个起始时间.

    public GameObject start;
    public GameObject end;
    private GameObject player;
    float startTime;

 void Test04()
    {
        Vector3 center = (start.transform.position + end.transform.position) / 2;
        center -= new Vector3(0,1,0);
        Vector3 startCenter = start.transform.position - center;
        Vector3 endCenter = end.transform.position - center;
        player.transform.position = Vector3.Slerp(startCenter, endCenter, (Time.time - startTime) / 5);
        player.transform.position += center;
    }

父子的继承关系  :父类操作影响子类的结果.体积成立方比例,
void Start () {
        //transform.position 是处于世界坐标系的
        Debug.Log("obj1:"+obj1.transform.position);
        Debug.Log("obj2:"+obj2.transform.position);
        Debug.Log("obj1LocalPosition:"+obj1.transform.localPosition);
        //ransform.localPosition 是以父物体是坐标系原点的  如果没有父物体  那么就使用世界坐标系
        Debug.Log("obj2LocalPosition:" + obj2.transform.localPosition);
        Debug.Log("obj1LocalScale: " + obj1.transform.localScale);
        Debug.Log("obj2LocalScale: "+obj2.transform.localScale);
        Debug.Log("obj2LossyScale: "+obj2.transform.lossyScale);

}

旋转

四元数
        Quaternion q = Quaternion.identity;
        q.eulerAngles = new Vector3(0,30,0) ;
        obj3.transform.rotation = q;

四元素和欧拉角的区别:

欧拉角在X轴上旋转90度时会发生万象锁现象0.0

public class EulerAndQuaternion : MonoBehaviour {

    // Use this for initialization
    void Start () {
    }
    // Update is called once per frame
    void Update () {
    }
    void OnGUI()
    {
        if (GUI.Button(new Rect(20,20,100,80),"Q_X"))
        {
            Quaternion q = Quaternion.identity;
            q.eulerAngles = new Vector3(30, 0, 0);
            transform.rotation = q * transform.rotation;
        }
        if (GUI.Button(new Rect(20, 105, 100, 80), "Q_Y"))
        {
            Quaternion q = Quaternion.identity;
            q.eulerAngles = new Vector3(0, 30, 0);
            transform.rotation = q * transform.rotation;
        }
        if (GUI.Button(new Rect(20, 190, 100, 80), "Q_Z"))
        {
            Quaternion q = Quaternion.identity;
            q.eulerAngles = new Vector3(0, 0, 30);
            transform.rotation = q * transform.rotation;
        }


        if (GUI.Button(new Rect(125, 20, 100, 80), "V_X"))
        {
            transform.eulerAngles += new Vector3(30,0,0);
        }
        if (GUI.Button(new Rect(125, 105, 100, 80), "V_Y"))
        {
            transform.eulerAngles += new Vector3(0, 30, 0);
        }
        if (GUI.Button(new Rect(125, 190, 100, 80), "V_Z"))
        {
            transform.eulerAngles += new Vector3(0, 0, 30);
        }
    }
}

原创粉丝点击