对向量的处理,在控制板显示出按钮42

得到两个向量的夹角

Vector3 v1 =newVector3(0, 0, 2);

        Vector3 v2 =newVector3(2, 0, 2);

        float degrees =Vector3.Angle(v1, v2);

        Debug.Log(degrees);

限制向量的长度不超过2

Vector3 v3 =Vector3.ClampMagnitude(v2, 2);

        Debug.Log(v3);

两个向量的距离

float distance =Vector3.Distance(v1, v2);

        Debug.Log("距离:" + distance);

得到两个向量之间的插值

Vector3 v4 =newVector3(8, 0, 0);

        Debug.Log("lerp" +Vector3.Lerp(v4, v2, 0.25f));

sqrMagnitude   得到向量的平方和

magnitude     将三个坐标的平方和再开平方

Debug.Log(Vector3.one*5)    表示三个坐标值都为5

向量的相减:

Vector3 v3 =newVector3(2, 5, 9);

Vector3 v4 =newVector3(1, 1, 1);

Vector3 result = v3 - v4;

Debug.Log("result" + result);

 

点乘       

Vector3 v1 =newVector3(2, 0, 0);

        Vector3 v2 =newVector3(2, 0, 2);

        float dotValue =Vector3.Dot(v1, v2);

        Debug.Log("点乘的结果:" + dotValue);


求Cos角度:

float temp = dotValue / (v1.magnitude *v2.magnitude); ;

       float aCosTemo =Mathf.Acos(temp);

        Debug.Log(aCosTemo +"**");     得到角度的Cos

        float degrees =Mathf.Rad2Deg* aCosTemo;

        Debug.Log(degrees);  得到角的大小

 

叉乘  得到的也是一个向量 而且是法向量

Vector3 v1 =newVector3(4, 6, 3);

Vector3 v2 =newVector3(5, 4, 2);

Vector3 ret =Vector3.Cross(v1, v2);

Debug.Log(ret);

数学知识:求x坐标是用Y坐标值和z坐标值 正序减逆序 

 

设置按钮控制物体的旋转

void OnGUI()

    {

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

        {

            Quaternion q =Quaternion.identity;

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

            transform.rotation = q *transform.rotation;       四元数

        }

得到两排按钮分别控制物体沿X,Y,Z的旋转

        if (GUI.Button(newRect(20, 105, 100, 80), "Q_Y"))

        {

            Quaternion q =Quaternion.identity;

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

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

            transform.rotation = q *transform.rotation;

        }

        if (GUI.Button(newRect(125, 20, 100, 80), "V_X"))

        {

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

        }

}


圆球移动到结束位置

player.transform.position=Vector3.MoveTowards(start.transform.position,end.transform.position,0.1f);

 

模仿太阳升起,小球走的是曲线

Vector3 center = (start.transform.position +end.transform.position) / 2;

        Vector3 startCenter = start.transform.position -center;

        Vector3 endCenter = end.transform.position - center;

Vector3.Slerp(startCenter, endCenter, (Time.time - startTime) / 5) ;

       player.transform.position += center;

对向量的处理,在控制板显示出按钮42