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