如何将世界方向转换为本地方向?

问题描述 投票:0回答:1

我有两个物体(A和B)的世界位置和A的旋转。我如何从A的角度计算从A到B的局部方向?

位置 = x, y, z 旋转 = x, y, z, w

我认为世界的方向应该是:

dir = B  - A
magnitude = dir.magnitude()
direction = dir / magnitude

不确定本地指导如何运作?

unity-game-engine math matrix vector glm-math
1个回答
0
投票

有很多方法可以实现这一点,您可以使用 GameObject A 中的 worldToLocalMatrix

var dir = A.transform.worldToLocalMatrix.MultiplyVector(dir);

或使用四元数手动计算:

var dir = Quaternion.Inverse(A.transform.rotation) * dir;

结果应该非常相似,除了第二种方式会损失层次结构中的任何规模(无论如何这可能是期望的效果)

© www.soinside.com 2019 - 2024. All rights reserved.