Unity3d 获得两个镜像旋转的单位差

Unity3d 获得两个镜像旋转的单位差,unity3d,rotation,Unity3d,Rotation,我有两个Unity中的示例对象,其结构如下: EmptyGameObject1: scale(-1, 1, 1) - Child1: rotation(-4, 167, 179) EmptyGameObject2: scale(1, -1, -1) - Child2: rotation(-1, -10, 0) 现在,考虑到其父对象的比例,我想得到子对象的欧拉角之间的差异。Vector3.Distance返回一个相当高的值,但我看到childs的旋转在场景视图中非常相似 我知道父对象的负比例反

我有两个Unity中的示例对象,其结构如下:

EmptyGameObject1: scale(-1, 1, 1)
- Child1: rotation(-4, 167, 179)

EmptyGameObject2: scale(1, -1, -1)
- Child2: rotation(-1, -10, 0)
现在,考虑到其父对象的比例,我想得到子对象的欧拉角之间的差异。Vector3.Distance返回一个相当高的值,但我看到childs的旋转在场景视图中非常相似

我知道父对象的负比例反映了子对象,但是 它在数学上对旋转有什么影响


如何计算x、y和z的单位旋转差?

假设
var rotation1=Child1.transform.rotation
var rotation2=Child2.transform.rotation(我们在世界空间工作,对吗?)。我们希望找到一个从Child1到Child2的旋转(我们称之为
difference
),这样
rotation1*difference==rotation2
。这意味着我们可以通过计算
var差=rotation2*四元数求逆(rotation1)。既然我们知道了旋转,我们就可以访问它的Euler angles属性来确定x、y和z角度:
差分.eulerAngles.x
等等。

很高兴为您提供帮助。如果试图对四元数的分量值进行运算,则四元数可能会令人困惑,但使用四元数对四元数运算会容易得多。使用欧拉角总是很有诱惑力,因为它们看起来更直观,但在很多边缘情况下,欧拉角会断裂,而四元数却能完美工作。