Unity 求两个向量间夹角

  • Post author:
  • Post category:其他





在学习Unity官方案例时,发现其中用了两种求物体XZ平面旋转夹角的方法:


方法1:


float angle = Vector3.Angle (fromVector, toVector); //求出两向量之间的夹角
Vector3 normal = Vector3.Cross (fromVector,toVector);//叉乘求出法线向量
angle *= Mathf.Sign (Vector3.Dot(normal,upVector));  //求法线向量与物体上方向向量点乘,结果为1或-1,修正旋转方向





方法2:


Vector3 velocity = Quaternion.Inverse (transform.rotation)*destinationVector; //对目标向量进行反向旋转,得到的新向量与z轴的夹角即为目标向量与当前物体方向的夹角		
float angle = Mathf.Atan2 (velocity.x,velocity.z) * Mathf.Rad2Deg; //返回tan值为x/z的角的弧度,再转化为度数。



版权声明:本文为u011711053原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。