unity向量计算

参考:https://www.cnblogs.com/wywnet/p/4790665.html

上面的文章讲的很重要

 

下面是我自己实现的一个例子

一直一个向量,一个夹角,求另一个向量

按P键改变夹角,Unity开启显示辅助线,可以看见

    public Transform Target;
    float jiaodu = 30f;

    void LateUpdate()
    {
        if (Input.GetKeyDown(KeyCode.P))
        {
            jiaodu += 10f;
        }

        Quaternion rotation = Quaternion.Euler(0f, jiaodu, 0f) * Target.rotation;
        Vector3 newPos = rotation * new Vector3(10f, 0f, 0f);
        Debug.DrawLine(Target.rotation * new Vector3(10f, 0f, 0f), Vector3.zero, Color.red);
        Debug.DrawLine(newPos, Vector3.zero, Color.red);
        Debug.Log("newpos " + newPos + " nowpos " + Target.position + " distance " + Vector3.Distance(newPos, Target.position));
    }

 

向量旋转

Quaternion.Euler (eulerAngles.x, eulerAngles.y, eulerAngles.z) * Vector3.forward

 

=====================================2022年2月17日 17:29:37===================================

更简单的旋转

        //射线 v1 旋转 per 度,其实垂直平面为 transform.right 得到v3
        Vector3 v3 = Quaternion.AngleAxis(per, transform.right) * v1;

 

posted @ 2017-11-11 16:28  三页菌  阅读(771)  评论(0编辑  收藏  举报