unity3d 中的Transform.TransformPoint與Transform.InverseTransformPoint方法

從歪果仁的腳本里看到了這個方法,查腳本,看腳本說明也沒看懂,官方的說明是,變換位置從世界坐標到自身坐標,Transform.TransformPoint相反。

試驗了一下得出這個結(jié)論,如果某一個物體A的坐標相對于世界坐標是(1,2,1), 物體target的坐標相對于世界坐標是(3,1,2)

Vector3 targetPos = target.transform.position;
Vector3 newPos = A.transfrom.InverseTransFormPoint(targetPos);
newPos 的值為(2,-1,1) :即將target置為A的子物體后的坐標

先說這個newPos是怎么計算的 , newPos的x方向的值我用, Xn表示, y, z,軸方向依次類推

Xn = - ( 1-3 ) = - (Xa - Xtarget) = 2

Yn = - ( 2-1 ) = - (Ya - Ytarget) = -1

Zn = - ( 1-2 ) = - (Za - Ztarget) = 1

這個值代表 物體target相對于物體A的位置, 換句話說, 就是把物體A當做了世界的中心,target相對于新的世界中心所返回的位置。

A的坐標相對于世界坐標是(1,2,1),target的坐標相對于世界坐標是(3,1,2),執(zhí)行一下代碼
Vector3 inverseTrasnVec = A.InverseTransformPoint(targetTransform.position); //將target的世界坐標轉(zhuǎn)換為相對于A的相對坐標
Vector3 trasnVec = A.TransformPoint(inverseTrasnVec);//將target相對于A的相對坐標轉(zhuǎn)換為世界坐標

    Debug.Log(inverseTrasnVec );
    Debug.Log(trasnVec);

輸出為
(2,-1,1) ,即tartget相對于a的相對坐標
(3,1,2)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容