Unity3D开发(编程)小技巧之三:计算两个物体的相对坐标

这是最近做unity项目遇到的一个问题,将解决过程以及最终解决方案(Unity community上大佬回答的)总结如下:

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

解决过程:
1.百度搜索,无果。网上基本上说的基本上是局部坐标系的问题。
2.查官方API,一番侦查之后,初步认定应该没有现成的方法(如果谁发现有请告知!)
3.QQ群求助,大佬说这么基本的问题好好去读API吧,再查无果。
4.灵感迸发,搜索了一下"relative position"终于在官方社区找到了解决方案。特此感谢…

解决方案

主要是一时没想明白,想明白了也就是一个简单的数学问题而已,直接贴代码如下:

    //计算同层次下一个物体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;
    }

经检验可用!

你可能感兴趣的:(Unity开发)