// 获取两个向量的夹角 Vector3.Angle 只能返回 [0, 180] 的值
// 如真实情况下向量 a 到 b 的夹角(80 度)则 b 到 a 的夹角是(-80)
// 通过 Dot、Cross 结合获取到 a 到 b, b 到 a 的不同夹角
private float GetAngle(Vector3 a, Vector3 b, Vector3 dir)
{
float angle1 = Vector3.Angle(a, b); //求出两向量之间的夹角
Vector3 normal = Vector3.Cross(a, b);//叉乘求出法线向量
angle1 *= Mathf.Sign(Vector3.Dot(normal, dir)); //求法线向量与物体上方向向量点乘,结果为1或-1,修正旋转方向
return angle1;
}
Unity 获取向量夹角
最新推荐文章于 2024-03-08 16:23:27 发布