rotation旋转超过90度之后获取eulerAngles值的问题

代码中设置了一个节点的rotation超多90度之后再调用getEulerAngles获取旋转角度,发现得到角度值是90减去超出90度的差额(比如我设置rotation为120,但是getEulerAngles得到的Z值却是60),有点懵逼。另外我试了直接在ide面板上设置这个节点的rotation的角度超过90度的话代码中获取的角度是正确的。
不知道这是我代码的问题还是引擎的问题?请大神们指教,已经肝了一下午了没找到解决方案。

我猜你可能需要四元数 :eyes:

我设置rotation时是用的四元数设置的

更新一下,我之前设置rotation是用四元数设置的,现在我换成setRotationFromEuler方法就正常了,可能是我对四元数的用法不太清楚,我再看一看

1赞

最后更新,游戏是2d的,引擎用的3.6.2版本,目前已经确定使用四元数设置旋转角度后再用getRotation().getEulerAngles(angle)方式获取旋转角度时超过90度会出问题,目前我不清楚是我做法有问题还是引擎的bug,我已改用setRotationFromEuler方法设置旋转角度并使用eulerAngles属性获取旋转角度,目前看来是正常的,后续有问题再更新。

Quat.getEulerAngles()获取的 是按照YZX顺序旋转的结果。所以有时候和我们预料的不一样。毕竟四元数是为了解决万向锁而存在的。