这是最近做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;
}