在Unity中获得两个镜像旋转之间的差异

时间:2015-04-29 23:43:01

标签: 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返回一个非常高的值,但我看到子场的旋转在场景视图中非常相似。

我知道父级的负比例反映了子对象 - 但是 它在数学上对旋转做​​了什么?

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

1 个答案:

答案 0 :(得分:0)

让我们说var rotation1 = Child1.transform.rotation;var rotation2 = Child2.transform.rotation;(我们在世界空间工作,对吧?)。我们希望从Child1到Child2找到一个轮换(让我们称之为difference),以便rotation1 * difference == rotation2。这意味着我们只需计算var difference = rotation2 * Quaternion.Inverse(rotation1);即可找到它。现在我们知道了旋转,我们可以访问它的欧拉角度属性来确定x,y和z角度:difference.eulerAngles.x等等。