-
首先看一下官方文档的说明:
public static float SignedAngle (Vector3 from, Vector3 to, Vector3 axis);
from | 测量角度差的源向量。 |
to | 测量角度差的目标向量。 |
axis | 一个向量,其他向量将绕其旋转。 |
返回
from
与to
之间的有符号角度(以度为单位)。返回两个向量之间的两个可能角度中的较小者,因此结果永远不会大于 180 度或小于 -180 度。 如果将 from 和 to 向量想象成一张纸上的线条,两者都源自同一点,则
axis
向量将指向纸外方向。 两个向量之间测量的角度在顺时针方向上为正,在逆时针方向上为负。
-
接下来是测试得到的结果记录:
(向量OB ———>向量OA,旋转轴为:Z轴正方向,即Vector3.forward)
得到的SignedAngle :
从图三可以看出,结果并未返回225 ,而是 -135。——“ 返回两个可能角度中的较小者 ”
-
关于符号
下图分别测试了OA到OB、OB到OA的结果:
-135,135
(为什么OA到OB是顺时针旋转,结果却为负值? 大概因为旋转轴我传入了Vector3.forward,也就是z轴正方向,如果使用z轴负方向将会得到相反的结果)
而Vector2的此方法,不需要传入旋转轴,只需要from和to的两个向量。
得到的结果是:逆时针旋转为负(-),顺时针为正(+)