美文网首页Unity进阶技术
unity 总结夹角的运算和Vector3.Dot的使用

unity 总结夹角的运算和Vector3.Dot的使用

作者: WOTTOW | 来源:发表于2019-03-20 19:02 被阅读0次

    效果图:


    angle.gif

    计算夹角原理:
    方法一:利用四元素的LookRotation,可以获取旋转的四元素值,也可以用四元素中带的Angle,计算出夹角

    方法二:利用三维的Angle计算夹角

    方法三:利用数学函数计算,使用到了Vector3.Dot计算点乘,
    然后使用 Mathf.Acos弧度,弧度再转换成角度。

    方向判断原理:
    只需运用点乘即可。

    代码:

    //旋转角度
        private void GetAngleA()
        {
            Vector3 targetDir = target.position - transform.position;
            Quaternion roation = Quaternion.LookRotation(targetDir);
            float angle =Quaternion.Angle(transform.rotation, roation);
            print("角度A:"+angle);
        }
    
        //旋转角度
        private void GetAngleB()
        {
            Vector3 targetDir = target.position - transform.position;
            //lhs   rhs
            float angle = Vector3.Angle(targetDir, transform.forward);
            print("角度B:" + angle);
        }
    
        private void GetAngleC()
        {
            Vector3 targetDir = target.position - transform.position;
            Vector3 playerForward = target.rotation * transform.forward;
            float angle = Mathf.Acos(Vector3.Dot(playerForward.normalized, targetDir.normalized))* Mathf.Rad2Deg;
            print("角度C:" + angle);
        }
    
        //判断左右
        private void Getdrection()
        {
            Vector3 targetDir = target.position - transform.position;
            float dir = Vector3.Dot(targetDir.normalized,transform.right);
            if (dir > 0)
            {
                print("右边");
            }
            else
            {
                print("左边");
            }
        }
    

    相关文章

      网友评论

        本文标题:unity 总结夹角的运算和Vector3.Dot的使用

        本文链接:https://www.haomeiwen.com/subject/bcwtvqtx.html