Unity:计算两个物体(没有父子关系)的相对坐标

问题描述

计算Unity场景中物体B在物体A坐标系下的坐标,且两物体没有父子关系

实现方法

计算一个物体A的position相对于另一个物体B(origin)的坐标

private Vector3 GetRelativePosition(Transform origin, Vector3 position)
{
    Vector3 distance = position - origin.position;
    Vector3 relativePosition = Vector3.zero;
    relativePosition.x = Vector3.Dot(distance, origin.right.normalized);
    relativePosition.y = Vector3.Dot(distance, origin.up.normalized);
    relativePosition.z = Vector3.Dot(distance, origin.forward.normalized);
    return relativePosition;
}

实现原理

计算物体A在物体B下的坐标,即将物体B的坐标origin视为坐标原点,物体A的坐标即为(B-A)*B的归一化方向。

参考链接

https://www.it610.com/article/1293777356627976192.htm

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐