我有一个围绕X轴旋转的变换。但是在将此旋转转移到另一个变换时,我希望它执行完全相同的旋转。但那时绕Z轴。
然而,这种旋转不是“旋转”,它只是一种从外部编辑旋转的变换。所以我必须旋转原始变换以匹配第二个变换,但要考虑旋转。
下图中的轴:RED = X,GREEN = Y,BLUE = Z
旋转原件:
旋转后应该有:
一帧一帧的正确方法是什么?
提前致谢,
笑脸
答案 0 :(得分:0)
我可以给你一个答案,解决将旋转从一个轴改变到另一个轴的一般问题。
每个变换对象都有一个transform.localRotation
属性,表示变换的方向,相对于父方向。如果变换没有父变换,则此方向与世界空间相关。
Quaternion
是用于表示轮换的数据类型,它有一个名为ToAngleAxis的有用方法。
float angle;
Vector3 axis;
transform.localRotation.ToAngleAxis(out angle, out axis);
将变量angle
和axis
设置为localRotation
的角度和轴。 out
部分意味着您要传入一个由函数设置的变量,而不是用作输入。
在这种情况下,angle
变量是您想要实际使用的部分。如果您使用Quaternion.AngleAxis,提供此angle
值和所需的轴,则会获得与您所需参数匹配的新轮换。
例如:要将transform1
的任意旋转更改为transform2
上的Z轴旋转,您可以使用
float angle;
float axis;
transform1.localRotation.ToAngleAxis(out angle, out axis);
transform2.localRotation = Quaternion.AngleAxis(angle, Vector3.forward);
希望这有帮助