我在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的单位旋转差异?
答案 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
等等。