用this.node.angle+= value 是可以的,但是当给刚体applyAngularImpulse()旋转时无法实时获得角度,只有this.node.eulerAngles能获得物理运动时的实时角度,我用this.node.angle去设置角度,然后实时查询eulerAngles并计算应该旋转的角度,结果就不能旋转超过正负90度了,和用setRotationFromEuler()一样了
eulerAngles的x和y会是0或180或-180,z绝对值不会超过90,引擎计算原理我不懂
如果在物理计算过程中把,eulerAngles.z赋值给this.node.angle
this.node.angle = this.node.eulerAngles.z;
然后再用this.node.angle去计算,并把旋转角度加给this.node.angle,可以旋转超过90,但是在物理模拟的过程中仅仅是赋值也会让旋转效果变得很奇怪转的飞快
其实就是如何使用eulerAngles的Vec3而不是使用this.node.angle去旋转超过90度的问题。。。求解。。。
let quat = Quat.fromEuler(new Quat(), this.node.eulerAngles.x, this.node.eulerAngles.y, this.node.eulerAngles.z + 1);
this.node.setRotation(quat);
使用四元数旋转依旧不能旋转超过90度
Cocos Creator 3.6.3 ,2D物体