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;
    }

經檢驗可用!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章