C# 当以统一的方式添加旋转时,结果似乎不是两个旋转的相加

C# 当以统一的方式添加旋转时,结果似乎不是两个旋转的相加,c#,math,unity3d,C#,Math,Unity3d,我正在旋转一个世界对象,该世界对象的y旋转为0。 当我将该对象旋转-90时,对象y旋转显示旋转270。 将同一对象旋转90(+)会使对象y旋转为=0 守则: transform.Rotate (0, -90, 0) transform.Rotate (0, 90, 0) 有人能解释一下这其中的原理吗?实际上-90度等于270度,但如果你不知道这一点,阅读会帮助你这都是关于基础数学的 (-2) + 2 = 0 同样地 (-90) + 90 = 0 如果您想了解转换,请检查 如果你想知道四元数

我正在旋转一个世界对象,该世界对象的y旋转为0。
当我将该对象旋转-90时,对象y旋转显示旋转270。 将同一对象旋转90(+)会使对象y旋转为=0 守则:

transform.Rotate (0, -90, 0)
transform.Rotate (0, 90, 0)

有人能解释一下这其中的原理吗?

实际上-90度等于270度,但如果你不知道这一点,阅读会帮助你

这都是关于基础数学的

(-2) + 2 = 0
同样地

(-90) + 90 = 0
如果您想了解转换,请检查


如果你想知道四元数,请检查。

我不确定我是否理解这个问题。您是否不明白为什么旋转
-90
度会导致报告值
270
?如果是,则它们是360度圆上的等效值。(90逆时针==270顺时针)您是否感到困惑,因为第二行旋转
+90
会导致报告
0
度?如果是这样,那是因为
.Rotate()
方法是相对于对象的当前旋转的。(
0-90+90==0
)你的轴心点是什么?对象的一个角或中心?如果你有一个游戏对象,当游戏对象当前在y轴上的旋转为0时,通过“transform.rotate(0,-90,0)”旋转它,那么为什么它的旋转=270@ChrisSinclair回答了这个问题。此外,我只是引用了四元数,而不是欧拉格,所以这增加了我的困惑。是的,基本数学不是问题所在。360作为起始旋转。360向左旋转90度为270,任何大于270的都等于0,任何小于-270的都等于0,左右旋转90度固定。当前起始y值的旋转为0,向左旋转90度=270,这是我的困惑。