Unity Quaternion - 获取组件B相对于组件A的欧拉角

Unity Quaternion - get Euler angles of a component B relative to component A

我无法理解四元数,并且已经尝试了很多运算符组合(在阅读/查看教程之后)。没有成功 - 只是表明我缺乏理解。甚至尝试使用角度和 atan2() - 但真正向我展示的是万向节锁是什么。我要解决的问题是:

我有一个组件(比如 A,一个立方体)在世界参考系中有一些旋转(实际上旋转是什么并不重要,可以朝向任何方向)。

然后我在世界其他地方有另一个组件(比如 B,另一个立方体)space。该组件的旋转是什么也无关紧要。

我最终想要得到的是 B 相对于 A 的(欧拉)角,但相对于 A 的参照系,而不是世界 space。原因是我想根据 B 从 A 的方向向 A 添加力,然后我可以使用 A.rigidbody.addRelativeForce(x, y, z); .

卡住了。

谢谢大家的评论,我想我知道了。

供参考,考虑在相同(世界坐标系)坐标内的向量和旋转,可以计算代表原始但从局部坐标系的角度来看的新向量,即原始世界旋转的向量如:

static Vector3 createVectorForLocalRotationFrame(Vector3 worldVector, Quaternion worldRotation, bool normalise)
{
    Vector3 localVector = Quaternion.Inverse(worldRotation) * worldVector;

    if (normalise)
        localVector.Normalize();

    return localVector;                                                             
}

规范化选项正是我所需要的。别问我效果如何,好像是对的。